1

我正在尝试通过给定的 XPath 将属性值写入现有的 XDocument。但似乎唯一的方法是获取一个元素,然后调用该属性。有什么方法可以直接编写属性(在我的情况下,没有将给定的 XPath 拆分为“/locations/group[@name="Client:UserData"]”以选择元素和“/@root”以从中获取属性XElement 对象)。

给定 XML(作为 XDocument):

<locations>
  <group name="Client:UserData" root="\\appserver\Data" required="true">
    <path name="some name" path="~\directory\file" required="false" autoCreate="false" />
  </group>
</locations>

给定 XPath:/locations/group[@name="Client:UserData"]/@root

给定值:“\appserver\anotherDirectory”

预期输出(作为 XDocument):

<locations>
  <group name="Client:UserData" root="\\appserver\anotherDirectory" required="true">
    <path name="some name" path="~\directory\file" required="false" autoCreate="false" />
  </group>
</locations>
4

1 回答 1

3

看起来XPathEvaluate()可以解决您的问题:

using System.Linq;
using System.Xml.Linq;
using System.Xml.XPath;

foreach (XAttribute attr in ((IEnumerable)
         yourDocument.XPathEvaluate(yourXPath)).OfType<XAttribute>()) {
    attr.Value = yourValue;
}
于 2013-10-28T10:04:28.680 回答