2012-07-25 37 views
0

對我來說,以下工作:在XElement中設置值 - 我真的必須從根開始嗎?

Xdoc.Element("session") 
    .Element("immediate") 
    .Element("pivot") 
    .Element("axes") 
    .Element("axis") 
    .Element("attribute") 
    .Element("selection") 
    .Attribute("value") 
    .SetValue("New_Value"); 

我真的需要在文檔的頂部開始?我知道我可以使用後代,但我不能引用元素?

什麼是正確的方法來做到這一點?在XPath我會做類似

/*/*/*/*etc 
+0

什麼是「正確」的方式,或者兩者兼而有之? – user1156000 2012-07-25 09:26:11

回答

0

東西,你的意思是這樣的:

var el = XElement.Parse("<session><immediate><pivot><axes><attribute><selection a=\"b\"/></attribute></axes></pivot></immediate></session>"); 
var sel = el.XPathSelectElement("immediate/pivot/axes/attribute/selection"); 
sel.SetAttributeValue("value","new_value"); 

?請注意,這需要:

using System.Xml.XPath; 

需要注意的是,如果這是由文件植根您可以使用/

var doc = XDocument.Parse("<session><immediate><pivot><axes><attribute><selection a=\"b\"/></attribute></axes></pivot></immediate></session>"); 
var sel = doc.XPathSelectElement("/session/immediate/pivot/axes/attribute/selection"); 

另一種方式將只是尋找.Descendants("selection"),但XPath的通常是更靈活。

相關問題