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

时间:2012-07-25 09:21:43

标签: 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");

我真的需要从文档的顶部开始吗?我知道我可以使用后代,但后来我无法引用该元素?

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

的事情
/*/*/*/*etc

1 个答案:

答案 0 :(得分: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通常更灵活。