2009-11-15 103 views
7

我想遍歷xml中的每個元素和屬性,並在不知道元素名稱的情況下提取一個值的名稱。我甚至有一本關於使用C#編寫linq to xml的書,它只告訴我如何查詢元素的值,以便知道元素的名稱。使用linq to xml遍歷xml樹中的每個元素

下面的代碼只給我最高級別的元素信息。我還需要達到所有降序要素。

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


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

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

回答

17

Elements只走一個級別; Descendants遍歷整個DOM的元素,那麼你就可以(每件)檢查屬性:

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

這真是棒極了!非常感謝您的幫助! – 2009-11-15 21:40:23

+0

JK - 忘記了什麼? – 2009-11-17 04:58:05

+0

呃,我不知道你忘了什麼是什麼意思。 – 2009-11-17 06:57:55

1

你應該嘗試:

reportElements.Descendants()