J'ai choisi le titre ici car mon problème est que je dois obtenir les nœuds Item mentionnés dans l'exemple. J'ai le code XML suivant et j'ai des problèmes avec LINQ pour l'interroger, j'ai déjà pu analyser XML - mais j'ai été bloqué pendant des heures et j'espère que quelqu'un pourra m'aider. Voici mes données XML ci-dessous (exemple de données):Comment obtenir des éléments par nom en XML en utilisant LINQ
<a:entry xmlns:a="http://www.w3.org/2005/Atom">
<a:id>98765</a:id>
<info>Data Catalogue</info>
<data>
<items>
<item>
<id>123456</id>
<value>Item One</value>
</item>
<item>
<id>654321</id>
<value>Item Two</value>
</item>
<items>
</data>
<items>
<item>
<id>123456</id>
<value>Item One</value>
</item>
<item>
<id>654321</id>
<value>Item Two</value>
</item>
<items>
<a:author>
<a:name>Catalogue</a:name>
</a:author>
</a:entry>
Je veux être en mesure d'extraire l'ID de la balise XML poste des postes, mais il y a un articles Tag avec des entrées d'article dans les données I DO NOT veux ces nœuds du tout - je veux root/items/id/id si cela a été exprimé en tant que chemin. J'ai essayé tout ce que je sais avec LINQ, donc si quelqu'un pouvait aider, des choses à noter bien que ce soit des données d'échantillons, c'est basé sur le système - le format ne peut pas être changé, ce n'est pas une solution acceptable.
Je n'arrive pas à déterminer où je vais mal - chaque expression LINQ que j'essaie ne renvoie rien, je pense que l'espace de noms est un problème et j'ai essayé de l'intégrer mais je vais en rond.
La solution doit travailler dans Silverlight et C#
J'ai essayé ce qui suit:
IEnumerable<XElement> nodes =
element.Elements().Where(e => e.Name.LocalName == "items")
Cependant cela me obtient tous les « éléments », y compris ceux sous « données » Je ne veux pas ceux-ci.
Si je fais ce qui suit sur mon XML je vois les noms des éléments affichés:
XElement element = XElement.Parse(data);
foreach (XElement node in element.Elements())
{
MessageBox.Show(node.Name.LocalName);
}
Cependant quand je fais cela, je ne vois pas les noms des noeuds sous les éléments du tout - je J'ai vérifié le XElement et il a le noeud et quand je publie les noms ci-dessus, "items" apparaît avec info et id!
foreach (XElement node in element.Elements("items"))
{
MessageBox.Show(node.Name.LocalName);
}
I figured it out - il y avait une déclaration d'espace supplémentaire qui était vide - l'ajout d'un espace de noms implicite à mon XML, en utilisant le XNamespace pour cela et l'ajouter au Nom de l'élément permet de résoudre le problème! – RoguePlanetoid