2010-07-30 3 views
1

Je souhaite utiliser LINQ to XML dans Silverlight 3 car il n'existe aucun support XPath. Je l'ai compris. Mais le projet sur lequel je travaille ne garantit pas que toutes les balises XML que je vais interroger apparaîtront dans le fichier XML de résultat. En raison de cela, je ne serai pas en mesure d'interroger le fichier global en tant que XDocument, car l'absence de la balise dans un document va fausser l'énumération. Y a-t-il un moyen de convertir un XNode en XDocument? Je pose cette question car je ne suis pas en mesure d'interroger le XNode.LINQ to XML: La requête XNode est-elle possible?

Répondre

2

Même avec LINQ-to-XML vous devriez interroger par nom, donc je ne sais pas pourquoi l'absence d'une étiquette particulière devrait "fausser l'énumération" - simplement; vous pourriez avoir des valeurs nulles, à savoir

var customer = node.Element("Foo"); 
// now test for null ;p 

Vous ne pouvez pas lancer un XNode arbitraire à un XDocument, mais si vous êtes sûr qu'il est un élément , coulée à XElement devrait fournir ce dont vous avez besoin.

Notez également que lorsque valeur nœuds peuvent être manquants, vous trouverez peut-être qu'il est plus facile d'utiliser la conversion opérateurs:

var auditDate = (DateTime?)e.Element("AuditDate"); 

si <AuditDate> n'existe pas, cela renvoie une Nullable<DateTime> vide - La même approche fonctionne pour les types de valeurs les plus communs, ou pour les chaînes, il suffit de convertir en string.