使用XmlDocument C#在xml中添加子元素

时间:2017-05-30 23:02:05

标签: c# xml

我想在根元素下添加子元素,但要成为第一个子元素。我当前的xml就像这样

<?xml version="1.0" encoding="utf-8"?>
<testsuites>
 <testsuite name="classname" tests="9" failures="3" errors="6" time="2919" disabled="0" skipped="0">
  <testcase name="Setup1" time="5" classname="classname">
  </testcase>
  <testcase name="Setup2" time="49" classname="classname">
  </testcase>
  <testcase name="Setup3" time="357" classname="classname">
  </testcase>
 </testsuite>
</testsuites>

添加元素后,我希望它看起来像这样

<?xml version="1.0" encoding="utf-8"?>
<testsuites>
 <properties name ="namedata" value="valuedata">
 </properties>
  <testsuite name="classname" tests="9" failures="3" errors="6" time="2919" disabled="0" skipped="0">
   <testcase name="Setup1" time="5" classname="classname">
   </testcase>
   <testcase name="Setup2" time="49" classname="classname">
   </testcase>
   <testcase name="Setup3" time="357" classname="classname">
   </testcase>
  </testsuite>
</testsuites>

我做的是

XmlDocument report = new XmlDocument();
report.Load(fileOfReport);
XmlElement root = report.CreateElement("properties");
root.SetAttribute("property name", "namedata");
root.SetAttribute("value","valuedata");
var items = report.GetElementsByTagName("testsuite");
for(int i=0; i<items.Count; i++){
    child.AppendChild(items[i]);
}
report.AppendChild(root);
report.Save(fileOfReport);

代码将属性显示为包含testsuite的根元素,但实际上我希望它作为与testsuite并行的子元素。我该如何重组呢? 注意,我只能使用xmlDocument而不是xDocument

由于

1 个答案:

答案 0 :(得分:0)

XmlDocument有很多有用的方法。在这种情况下,PrependChild很方便。

XmlDocument report = new XmlDocument();
report.Load(fileOfReport);

XmlElement root = report.CreateElement("properties");
root.SetAttribute("propertyname", "namedata");
root.SetAttribute("value", "valuedata");

report.DocumentElement.PrependChild(root);

report.Save(fileOfReport);