J'essaie de me donner la tête autour d'un problème que j'ai à Linq à XML, semble que cela devrait être assez simple, mais même après la navigation sur les questions de Linq aux questions XML ici, je ne peux pas vraiment l'obtenir. < p> Prenez quelque chose dans les lignes du XML suivant: p> Je veux maintenant vérifier si l'utilisateur avec ID 2 a un numéro de téléphone. P> pourrait Quelqu'un suggère une solution, comme je l'ai dit semble, comme si cela devrait être simple ... P> acclamations,
OLA P> P>
3 Réponses :
Il y a probablement une meilleure façon de faire cela (je ne connais pas encore terriblement avec Linq-to-XML), mais cet extrait de code devrait fonctionner: Il énumère essentiellement Sur tous les nœuds "utilisateur" de votre XML, puis tous les nœuds "ContactDétails" à l'intérieur du nœud utilisateur, puis vérifiez s'il y a des sous-codes "téléphone" sous cela. P> Le marc p> p> .descendants () code> L'appel renvoie une liste des nœuds de xelement et s'il n'y a aucun type que vous avez interrogé sur, le
.Count () code> sur cette liste (un
ienumerable < T> code>) retournera 0 - c'est ce que mon code vérifie. P>
Voici une approche de requête:
XElement yourDoc = XElement.Load("your file name.xml"); bool hasPhone = ( from user in yourDoc.Descendants("user") where (int)user.Attribute("id") == 2 select user.Descendants("phone").Any() ).Single();
dans Linq à XML Vous pouvez effectuer cette vérification rapide avant d'obtenir une valeur:
if (!xe.Root.Element("Date").IsEmpty) { pd.datefield = System.Convert.ToString(xe.Root.Element("Date").Value); }