2009-11-15 5 views
7

Je voudrais parcourir chaque élément et attribut dans un fichier xml et saisir le nom d'une valeur sans connaître les noms des éléments à l'avance. J'ai même un livre sur linq en xml avec C# et il me dit seulement comment faire une requête pour obtenir la valeur des éléments quand je connais déjà le nom de l'élément.traverse chaque élément de l'arbre xml en utilisant linq to xml

Le code ci-dessous ne me donne que l'information élémentaire la plus élevée. Je dois également atteindre tous les éléments descendants.

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


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

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

Répondre

17

Elements marche un seul niveau; Descendants parcourt l'ensemble du DOM pour les éléments, et vous pouvez ensuite (par élément) vérifier les attributs:

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

Cela a fonctionné très bien! Merci beaucoup pour l'aide! –

+0

JK - Vous avez oublié quelque chose? –

+0

Euh, je ne sais pas ce que tu veux dire en oubliant quelque chose. –

1

Vous devriez essayer:

reportElements.Descendants()