如何使用 c# 替换 xml 中的标记

本文关键字:xml 何使用 替换 | 更新日期: 2023-09-27 18:30:48

我想替换 C# 中的 XML 标记值。下面是一些示例 XML:

<Dr.Watson>
 <Bugs>
  <Bug Name="Bug.add --> AAAAAAAAAAAA">
    <criteria>
      <includeFilterSets>
        <filterSet>
          <filter>
            <filterName>PRODUCT_NAME</filterName>
            <operator>
              <name>Equals</name>
            </operator>
            <value>Dr.Watson</value>
          </filter>
        </filterSet>
      </includeFilterSets>
      <grouping>
        <groupBy>
          <name>STATUS</name>
        </groupBy>
      </grouping>
      <caseSensitive>false</caseSensitive>
      <entityToSearch>
        <name>BUG</name>
      </entityToSearch>
    </criteria>
  </Bug>
 </Bugs>
</Dr.Watson>

我想替换标签<name>STATUS</name> <groupBy>标签。

这是我现有的代码:

XDocument xdoc1 = XDocument.Load(FilePath_EXPRESS_API_InputFile);
XElement one = xdoc1.Descendants("/Dr.watson/Bugs/Bug/grouping/groupBy").First();
one.SetAttributeValue("name", "ID"); xdoc1.Save(FilePath_EXPRESS_API_InputFile); 

我做错了什么?

如何使用 c# 替换 xml 中的标记

首先,<name>STATUS</name>不是一个属性,它是一个元素。因此,应使用 SetValue 方法来更改其值。

其次,不能Descendants方法中使用 XPath。有关替代方案,请参阅此问题。