2012-07-31 52 views
1

我有XElement對象,它是從XML文件讀取的我的XML樹。現在我想檢查此樹中的所有節點以獲取第一個屬性名稱和值。是否有任何簡單的方法可以遍歷所有節點(從根到葉)?我的XML文件有很多不同和奇怪的節點 - 這就是爲什麼解決這個問題更困難的原因。我想寫一些遞歸,但希望這是另一種更容易解決的方法。檢查所有孩子的XElement

回答

2

也許看看Xpath。像這樣的//*[@id=42]這樣的XPath可以完成這項工作。

這意味着獲得這有一個屬性「ID」的值42.

你可以做所有的節點只是//*這該怎麼回報在樹中的所有節點。

的Xpath: http://msdn.microsoft.com/en-gb/library/ms950786.aspx

語法: http://msdn.microsoft.com/en-us/library/ms256471.aspx

+0

是啊,這就是我要找的。我可以一次獲取所有路徑 - 加載XML文件,然後我可以使用它們線性地獲得所有節點:) Thx – Nickon 2012-07-31 13:25:24

+1

爲了更快速,您應該在XPath中添加更多受限制的參數:),如屬性,具有節點「富」作爲父母或類似的東西。 – ykatchou 2012-07-31 13:44:51

1

你可以使用XElement.Elements()所有子元素。

下面是一個使用遞歸以獲得各個級別的所有元素一些代碼:

void GetElements(XElement element){ 
    var elements = element.Elements(); 

    foreach(Element e in elements){ 
     //some stuff here 

     if(e.Elements() != null) 
      GetElements(e); 
    } 
} 
+0

使用這個我只會從我的XElement中得到-1級的孩子。然後我需要通過重複.Elements()來獲得另一個關卡。我想避免它。 – Nickon 2012-07-31 13:22:58

+0

@Nickon我發佈了一些使用遞歸的代碼。 – 2012-07-31 13:29:17

+1

Thx,我會嘗試這兩種方法 – Nickon 2012-07-31 13:32:01