我是XML初学者,由于这个问题已经使我困扰了几个小时,我真的需要您的帮助。
我正在使用C#并编写一些代码来控制我的XML。 现在我有一个
string StrSec = "Scetion A"
我的代码如下:
XmlDocument doc = new XmlDocument();
doc.LoadXml(myPath);
在这里我想做这样的事情:
Check each of sections in current XML, if section.name == StrSec
然后将新案例放入该特定部分
if section.name != StrSec, then put case into Section B
XmlElement newCase = doc.CreateElement("case");
XmlElement newName= doc.CreateElement("name");
newName.InnerText = "Case 4";
XmlElement newDes= doc.CreateElement("description");
newDes.InnerText = "something here";
newCase .AppendChild(newName);
newCase .AppendChild(newDes);
这是当前的XML
<?xml version="1.0" encoding="UTF-8"?>
<suite>
<sections>
<section>
<name>Section A</name>
<cases>
<case>
<name>Case 1</name>
<description>something here</description>
</case>
<case>
<name>Case 2</name>
<description>something here</description>
</case>
</cases>
</section>
<section>
<name>Section B</name>
<cases>
<case>
<name>Case 3</name>
<description>something here</description>
</case>
</cases>
</section>
</sections>
</suite>
最终结果应如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<suite>
<sections>
<section>
<name>Section A</name>
<cases>
<case>
<name>Case 1</name>
<description>something here</description>
</case>
<case>
<name>Case 2</name>
<description>something here</description>
</case>
<case>
<name>Case 4</name>
<description>something here</description>
</case>
</cases>
</section>
<section>
<name>Section B</name>
<cases>
<case>
<name>Case 3</name>
<description>something here</description>
</case>
</cases>
</section>
</sections>
</suite>
谢谢。
答案 0 :(得分:0)
使用XDocument代替XmlDocument(因为使用起来稍微容易一些):
var doc = XDocument.Parse(text);
foreach (var section in doc.Descendents("section").Where(x => x.Element("name").Value == "Section A"))
{
section.Element("cases").Add(
new XElement("case",
new XElement("name", "Case 4"),
new XElement("description", "something here")
)
);
}
您可以在XElement here上找到更多文档。