我想用新的元素替换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#for xml scenario.Thanks.Also,请注意我不想保存这些编辑,并希望使用已编辑的xml运行时来执行API。
答案 0 :(得分:0)
通过XML-DOM API替换节点(XmlDocument
等):
XmlNode
(或子类)的实例parent
,表示要替换的节点的父元素。parent.RemoveChild
删除旧节点。parent.AppendChild
添加新节点。(作为#3的替代使用parent.InsertAfter
或parent.InsertBefore
以及对另一个孩子的引用,以将新节点放在其他现有子节点中。)
您在问题中的代码似乎是从头开始构建一个新的XML文档:您为什么要替换节点 - 只是第一次创建正确的节点。要修改现有XML文档,请使用静态XmlDocument.Load
方法之一加载和解析现有文档,使用各种搜索和导航方法获取上面#1中的引用,然后应用上述步骤,最后保存照常。