He elegido el título aquí porque mi problema es que necesito obtener los nodos de elementos mencionados en el ejemplo. Tengo el siguiente XML y tengo problemas al usar LINQ para consultarlo, he podido analizar XML antes; sin embargo, he estado atascado en esto durante horas y espero que alguien pueda ayudar. Aquí es mis datos XML siguientes (datos de ejemplo):Cómo obtener elementos por nombre en XML usando 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>
Quiero ser capaz de extraer el ID de la etiqueta XML de artículos en Elementos, sin embargo no es una etiqueta artículos con Registros de artículos en virtud de los datos no lo hago quiero estos nodos para nada; quiero root/items/id/id si esto se expresó como ruta. He intentado con LINQ todo lo que sé, así que si alguien puede ayudar, hay que tener en cuenta que, aunque se trata de datos de muestra, se basa en el sistema; el formato no puede modificarse, por lo que no es una solución aceptable.
Parece que no puedo determinar dónde me está yendo mal: cada expresión de LINQ que intento no arroja nada, creo que el espacio de nombres es un problema y he tratado de integrar esto, pero voy en círculos.
solución debe trabajar en Silverlight y C#
he intentado lo siguiente:
IEnumerable<XElement> nodes =
element.Elements().Where(e => e.Name.LocalName == "items")
Sin embargo esto me lleva todos los "elementos" que incluyen las que están en "datos" que no quieren esos.
Si hago lo siguiente en mi XML Yo veo los nombres de los elementos exhibidas:
XElement element = XElement.Parse(data);
foreach (XElement node in element.Elements())
{
MessageBox.Show(node.Name.LocalName);
}
Sin embargo cuando hago esto, no puede ver los nombres de los nodos en los literales a todos - I' he comprobado el XElement y tiene el nodo y cuando arrojo los nombres arriba, aparece "artículos" junto con la información y la identificación.
foreach (XElement node in element.Elements("items"))
{
MessageBox.Show(node.Name.LocalName);
}
lo he descubierto - hubo una declaración de espacio extra que estaba en blanco - la adición de un espacio de nombres implícita a mi XML, utilizando el XNamespace para esto y agregarlo al nombre del elemento resuelve el problema! – RoguePlanetoid