【发布时间】:2013-09-10 08:47:42
【问题描述】:
我想将 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。
【问题讨论】:
-
您的问题的确切目的是什么?如果我理解你,你可以在你的原始 XML 上使用
Replace()方法(如果它仅用于测试)。否则,我真的不知道你的问题是什么。 -
你就是几个小时前发布几乎完全相同的问题的同一个人,对吧? stackoverflow.com/questions/18696435/…。如果您想要做的唯一 是将“STATUS”更改为“STATE”,然后将整个 xml 读入一个字符串,然后
Replace("STATUS", "STATE")就完成了! -
@Corak 谢谢.. 实际上我想创建完整的标签,然后替换,因为我以后需要使用这个工作流程。