0

我想用新元素替换 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>

到目前为止我有代码:

XmlDocument doc = new XmlDocument();
doc.LoadXml(FilePath_EXPRESS_API_InputFile);
XmlNodeList nodelist = doc.SelectNodes("/Dr.Watson/Bugs/Bug");


//create node and add value
//Console.WriteLine(mxpwr.Value);
XmlNode node = doc.CreateNode(XmlNodeType.Element, "grouping", null);
XmlNode node11 = doc.CreateNode(XmlNodeType.Element, "groupBy", null);
XmlNode node12 = doc.CreateNode(XmlNodeType.Element, "name", null);

//Create Title Node
XmlNode Test_11 = doc.CreateElement("grouping");
XmlNode Test_22 = doc.CreateElement("groupBy");
XmlNode Test_44 = doc.CreateElement("name");

//add value for it
Test_11.InnerText = ("");
Test_22.InnerText = ("");
Test_44.InnerText = ("");

//create Url node
//XmlNode Test_445 = doc.CreateElement("sai");
Test_44.InnerText = ("STATE");

//add to parent node
Test_11.AppendChild(Test_22);
Test_22.AppendChild(Test_44);

//add to elements collection
doc.DocumentElement.AppendChild(Test_11);
Test_11.AppendChild(Test_22);
Test_22.AppendChild(Test_44);

请建议并帮助我,因为我是 c# 的 xml 场景的新手。谢谢。另外,请注意,我不想保存这些编辑,而是想使用编辑后的 ​​xml 运行时来执行 API。

4

1 回答 1

0

XmlDocument要通过 XML-DOM API ( et al)替换节点:

  1. 获取XmlNode(或子类)的实例parent,表示要替换的节点的父元素。
  2. 用于parent.RemoveChild删除旧节点。
  3. 用于parent.AppendChild添加新节点。

(作为 #3 的替代方法,使用parent.InsertAfterorparent.InsertBefore和对另一个子节点的引用将新节点放置在其他现有子节点中。)

您在问题中的代码似乎是从头开始构建一个新的 XML 文档:为什么要替换一个节点 - 只需第一次创建正确的节点。要修改现有的 XML 文档,请使用其中一种静态XmlDocument.Load方法加载和解析现有文档,使用各种搜索和导航方法获取上面 #1 中的引用,然后应用上述步骤,最后正常保存。

于 2013-09-10T08:58:49.090 回答