c#, linq to xml de la liste
Je me demandais si il ya un moyen d'obtenir une liste de résultats dans une liste avec linq to xml. Si j'aurais le code xml suivant par exemple:
<?xml version="1.0"?>
<Sports xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SportPages>
<SportPage type="test">
<LinkPage>
<IDList>
<string>1</string>
<string>2</string>
</IDList>
</LinkPage>
</SportPage>
</SportPages>
</Sports>
Comment pourrais-je obtenir une liste de chaînes de caractères à partir de la IDList?
Je suis assez nouveau dans linq to xml, donc j'ai juste essayé quelques trucs, je suis actuellement à ce point:
var IDs = from sportpage in xDoc.Descendants("SportPages").Descendants("SportPage")
where sportpage.Attribute("type").Value == "Karate"
select new
{
ID = sportpage.Element("LinkPage").Element("IDList").Elements("string")
};
Mais le var est le chaos à lire d'une manière décente. N'est-il pas un moyen que je pouvais tout simplement obtenir une liste de chaînes de caractères à partir de cela?
Grâce
OriginalL'auteur WtFudgE | 2010-04-08
Vous devez vous connecter pour publier un commentaire.
Cette requête fonctionne - testé et vérifié:
Me donne une liste de deux chaînes, "1" et "2".
SportPage
élément qui n'est pas untype
attribut.résolu, j'ai enlevé le LinkPage descendants et SportPages descendants parce que grâce à d'autres réponses, j'ai compris qu'il autosearches 🙂 Donc merci beaucoup à tous de u!
OriginalL'auteur marc_s
pour voir votre chaîne:
sportpage.Attribute("type").Value == "Karate"
OriginalL'auteur Yuriy Faktorovich
Voulez-vous dire cela?
Aussi, vous devez être plus prudent avec votre supérieure et inférieure du boîtier: par exemple, cette instruction ne fonctionne pas:
.Where( anySportPage => anySportpage.
- vous devez utiliser la même enveloppe dans les deux cas!!anySportPage vs. anySportpage
- pas identiques!Née de ne pas tester et en supposant que je savais que ce qui est sorti de la
.Elements()
. (À l'aide devar IDs
pourrait fonctionner, mais je n'ai jamais vraiment aimévar
.) Merci pour les corrections, et pour l'écriture d'une réponse correcte. 🙂OriginalL'auteur ANeves
Je pense que la raison pour laquelle vous trouverez le "var" chaotique est votre création de l'anonyme de type avec la "nouvelle" dans votre sélection. Si vous sélectionnez simplement le seul élément que vous êtes après, alors que le var ne sera pas un type anonyme.
par exemple
Cependant, ma préférence serait de le faire en utilisant les . la notation de ce genre.
OriginalL'auteur Robin Day
Le plus grand problème que vous avez eu, c'est que vous n'avez pas saisir l'
.Value
de l'élément retourné ensemble. Mais voici une autre façon de le faire..Value
à la fin de l'instruction dans votre sélection.OriginalL'auteur Matthew Whited