Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在XElement中设置值-我真的必须从根开始吗?_C#_Xml_Xpath_Linq To Xml - Fatal编程技术网

C# 在XElement中设置值-我真的必须从根开始吗?

C# 在XElement中设置值-我真的必须从根开始吗?,c#,xml,xpath,linq-to-xml,C#,Xml,Xpath,Linq To Xml,以下是我的作品: Xdoc.Element("session") .Element("immediate") .Element("pivot") .Element("axes") .Element("axis") .Element("attribute") .Element("selection") .Attribute("value") .SetValue("New_Value"); 我真的需要从文档的顶部开始吗?我知道我可以使

以下是我的作品:

Xdoc.Element("session")
    .Element("immediate")
    .Element("pivot")
    .Element("axes")
    .Element("axis")
    .Element("attribute")
    .Element("selection")
    .Attribute("value")
    .SetValue("New_Value");
我真的需要从文档的顶部开始吗?我知道我可以使用后代,但是我不能引用元素

正确的方法是什么?在XPath中,我会做类似于

/*/*/*/*etc
你是说:

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");
请注意,如果此文档以文档为根,则可以使用
/

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");
var doc=XDocument.Parse(“”);
var sel=doc.XPathSelectElement(“/session/immediate/pivot/axes/attribute/selection”);
另一种方法是查找
.substands(“selection”)
,但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");