2012-05-09 16 views
6

Estoy trabajando en XmlElement en C#. Tengo un XmlElement. La fuente del XmlElement se verá como la muestra a continuación.cómo obtener los valores de un atributo de un elemento usando XMlElement

muestra:

<data> 
    <p>hello all 
     <strong> 
      <a id="ID1" href="#" name="ZZZ">Name</a> 
     </strong> 
    </p> 
    <a id="ID2" href="#" name="ABC">Address</a> 
</data> 

tengo que recorrer el XML arriba para buscar el nombre elemento a. También quiero extraer la ID de ese elemento en una variable.

Básicamente quiero obtener el atributo ID del elemento <a>. Puede ocurrir como un elemento secundario o como un elemento primario separado.

¿Alguien puede ayudar cómo se puede hacer.

+0

tal vez la misma pregunta aquí http://stackoverflow.com/questions/1216669/issue-to-get-specific-xml-element-value-using-c-sharp – chanhle

+1

¿Está analizando XML real o HTML? ¿Qué has intentado hasta ahora? – SimonC

+0

Estoy analizando XML real – Patan

Respuesta

4

Puesto que usted está usando C# 4.0 se puede utilizar LINQ to XML como esto:

XDocument xdoc = XDocument.Load(@"C:\Tmp\your-xml-file.xml"); 
foreach (var item in xdoc.Descendants("a")) 
{ 
    Console.WriteLine(item.Attribute("id").Value); 
} 

deben darle el elemento a independientemente de dónde se encuentra en la jerarquía.


Desde su comentario, para el código que sólo se utilizan las clases XmlDocument y XmlElement el código equivalente sería:

XmlDocument dd = new XmlDocument(); 
dd.Load(@"C:\Tmp\test.xml"); 
XmlElement theElem = ((XmlElement)dd.GetElementsByTagName("data")[0]); 
//   ^^ this is your target element 
foreach (XmlElement item in theElem.GetElementsByTagName("a"))//get the <a> 
{ 
    Console.WriteLine(item.Attributes["id"].Value);//get their attributes 
} 
+0

vacío. Mi aplicación solo admitirá el objeto XmlElement. ¿Puedes editar tu respuesta en consecuencia? – Patan

+0

@ User222 Actualicé mi respuesta. – gideon

+0

gracias por la respuesta – Patan

Cuestiones relacionadas