Trouver des Éléments par Attribut à l'aide de XDocument
Cette requête semble être valide, mais j'ai 0 résultats.
IEnumerable<XElement> users =
(from el in XMLDoc.Elements("Users")
where (string)el.Attribute("GUID") == userGUID.ToString()
select el);
Mon XML est comme suit:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Users>
<User GUID="68327fe2-d6f0-403b-a7b6-51860fbf0b2f">
<Key ID="F7000012ECEAD101">
...
</Key>
</User>
</Users>
Avez-vous des indices pour faire la lumière sur cette?
Vous devez vous connecter pour publier un commentaire.
changement
Users
dans la 2ème ligne deUser
. Comme ceci:Je suis en supposant que XMLDoc est un XDocument, et non pas l'élément racine elle-même.
root
devrait êtreRoot
dansXMLDoc.root.Elements("User")
._api
nourrir? Je voudrais obtenir plusieurs éléments enfants de chaque parent éléments?Bien, le Utilisateurs éléments n'ont pas d'attributs GUID. Deux options proposées:
XDocument.Root.Elements("User")
Descendants("User")
pour trouver tous de l'Utilisateur éléments.Je vais rester avec l'ancien, pour le moment. Qui nous donne:
Maintenant, on peut toujours faire un peu le ménage plus loin. Tout d'abord, laissez le plâtre à
Guid
au lieu destring
:Cependant il n'y a pas beaucoup de raison d'utiliser une expression de requête ici... tout ce que vous postulez est un prédicat. Disons simplement utiliser le
Where
méthode directement:Comment vous mettre en page est à vous, bien sûr 🙂 Avec une ligne plus longue, vous pouvez probablement aligner le tout sous une plus première ligne:
Maintenant, enfin, qu'en est - il si l'Utilisateur élément n'est pas un attribut de GUID? Actuellement, ce code va lever une exception. C'est peut-être exactement ce que vous voulez - ou il ne peut pas. Si elle ne l'est pas, vous pouvez le faire ignorer ce genre de choses par la coulée de
Nullable<Guid>
akaGuid?
à la place: