8
votes

Vérification Si un élément enfant XML existe avec Linq à XML

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: xxx

Je veux maintenant vérifier si l'utilisateur avec ID 2 a un numéro de téléphone.

pourrait Quelqu'un suggère une solution, comme je l'ai dit semble, comme si cela devrait être simple ...

acclamations, OLA


0 commentaires

3 Réponses :


3
votes

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: XXX

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.

Le .descendants () 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 () sur cette liste (un ienumerable < T> ) retournera 0 - c'est ce que mon code vérifie.

marc


0 commentaires

13
votes

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();


0 commentaires

1
votes

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);
}


0 commentaires