如何使用Xpath和fn:replace函数更改属性值?

时间:2012-03-07 20:26:21

标签: c# xml xpath

是否可以使用XPath替换功能一次将名为Entry的所有属性的值更改为新值?或者我必须手动迭代所有节点并自己替换每个属性值?

我有这个Sample XML

<?xml version="1.0" encoding="UTF-16"?>
<Root>
  <Items>
    <action type="xta">
      <Menu Type="2"  Entry="Foo1"  />
      <Menu Type="1"  Entry="Foo2"/>
      <Menu Type="1"  Entry="Foo3"/>
      <Menu Type="1"  Entry="Foo4"/>
    </action>
  </Items>
</Root>

我想要这个

<?xml version="1.0" encoding="UTF-16"?>
<Root>
  <Items>
    <action type="xta">
      <Menu Type="2"  Entry="Bar\Foo1"  />
      <Menu Type="1"  Entry="Bar\Foo2"/>
      <Menu Type="1"  Entry="Bar\Foo3"/>
      <Menu Type="1"  Entry="Bar\Foo4"/>
    </action>
  </Items>
</Root>

如果不能直接使用XPath,这是使用c#实现此目的的最佳方法吗?

1 个答案:

答案 0 :(得分:0)

您所要求的不是直接的XPath导航操作,而是一种转换。有多种方法可以完成更改Xml,但最好的方法可能就是:

  1. 您可以将XslCompiledTransform Class与xslt一起使用。 (另见Using the XslCompiledTransform Class
  2. 您可以使用XDocument Class中的LINQ to XML并通过C#代码进行更改。