J'essaie d'extraire des informations d'un fichier XML dans un objet en utilisant LINQ to XML. Bien que je puisse renvoyer les attributs Id de document et de section, je ne peux pas accéder à l'élément Items pour chaque élément de section, il renvoie un IEnumerable de tous les éléments du document. Je sais que c'est correct car j'appelle Descendants mais j'ai du mal à le faire pour ne renvoyer que les éléments enfants de chaque élément de section. Quelqu'un peut-il aider?LINQ to XML Sélection d'éléments enfants
document XML
<root>
<document id="1">
<section id="1.1">
<item id="1.1.1"></item>
<item id="1.1.2"></item>
<item id="1.1.3"></item>
</section>
<section id="1.2">
<item id="1.2.1"></item>
<item id="1.2.2"></item>
</section>
</document>
</root>
requête LINQ
XElement documentRoot = XElement.Load("document.xml");
var documents = (from docs in documentRoot.Descendants("document")
select new
{
Id = (string) docs.Attribute("id"),
Sections = docs.Elements("section"),
Items = docs.Elements("section").Elements("item")
}).ToList();
foreach(var doc in documents)
{
foreach(var section in doc.Sections)
{
Console.WriteLine("SectionId: " + section.Attribute("Id"));
foreach(var item in doc.Items)
{
Console.WriteLine("ItemId: " + section.Attribute("Id"));
}
}
}
Je ne suis pas un peu clair quant à l'objectif. Votre objet anonyme est composé de l'ID du document, de toutes les sections du document et de tous les éléments de toutes les sections du document. Si vous essayez de reconstruire la hiérarchie XML en tant qu'objet anonyme, vous aurez besoin de plusieurs requêtes. Pourquoi ne pas simplement utiliser le XML dans ce cas? – womp