2009-11-15 17 views
7

Me gustaría recorrer cada elemento y atributo en un xml y tomar el nombre de un valor sin conocer los nombres de los elementos de antemano. Incluso tengo un libro sobre linq to xml con C# y solo me dice cómo consultar para obtener el valor de los elementos cuando ya sé el nombre del elemento.recorre cada elemento en el árbol xml usando linq a xml

El siguiente código solo me da la información de elementos de más alto nivel. También necesito llegar a todos los elementos descendentes.

  XElement reportElements = null; 
      reportElements = XElement.Load(filePathName.ToString()); 


      foreach (XElement xe in reportElements.Elements()) 
      { 

       MessageBox.Show(xe.ToString()); 
      } 

Respuesta

17

Elements única paseos de una sola planta; Descendants recorre todo el DOM para los elementos, y luego puede (por elemento) verificar los atributos:

foreach (var el in doc.Descendants()) { 
     Console.WriteLine(el.Name); 
     foreach (var attrib in el.Attributes()) { 
      Console.WriteLine("> " + attrib.Name + " = " + attrib.Value); 
     } 
    } 
+0

Esto funcionó muy bien! ¡Muchas gracias por la ayuda! –

+0

JK - ¿Olvidó algo? –

+0

Er, no sé a qué te refieres por haber olvidado algo. –

1

Usted debe tratar:

reportElements.Descendants()