使用XmlDocument C#向XML添加根元素

3

我想在现有的 XML 报告中添加一个根元素 --testsuites。我的当前报告如下:

<?xml version="1.0" encoding="utf-8"?>
 <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="Setup23" time="357" classname="classname">
  </testcase>
  </testsuite>

我希望将其改为

    <?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="Setup23" time="357" classname="classname">
      </testcase>
     </testsuite>
    </testsuites>

我的当前版本对我不起作用。

XmlDocument report = new XmlDocument();
report.Load(fileOfReport);
XmlElement root = report.CreateElement("root");
root.SetAttribute("testsuites","testsuites");
XmlElement child = report.CreateElement("child");
child.GetElementsByTagName("testsuite");
report.DocumentElement.AppendChild(root);
root.AppendChild(child);        
report.Save(fileOfReport);

有人能帮忙吗?


2
请不要从Internet Explorer中复制XML源代码。请从您正在处理的XML文件中复制XML源代码。 - Tomalak
我对XML领域不太了解。你能详细解释一下吗?你是说我应该将XML源代码转换为文件吗? - Jiang Jiali
1
不,我的意思是你不应该复制并粘贴在Internet Explorer中打开XML文件时显示的交互式预览。这是无用的,因为它包含额外的字符。请在文本编辑器中打开XML文件。 - Tomalak
@JiangJiali 不要包含 +-。人们必须手动删除这些内容,然后才能解析 XML。期望他们为你做这些事是不考虑别人的。 - 15ee8f99-57ff-4f92-890c-b56153
谢谢大家,我已经修改了。请帮忙告诉我如何添加根元素。 - Jiang Jiali
1个回答

1
你需要调用CreateElement来创建节点并附加所需的子节点。最后将新创建的节点附加到文档中。
 XmlDocument report = new XmlDocument();
    report.Load(fileOfReport);
    XmlElement root = report.CreateElement("testsuites");           
    var items = report.GetElementsByTagName("testsuite");
    for (int i = 0; i < items.Count; i++)
    {
        root.AppendChild(items[i]);
    }
    report.AppendChild(root);
    report.SaveAs(fileOfReport);

谢谢,Gowri。只有在将最后一行更改为保存而不是加载后,这才对我有效。 - Jiang Jiali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接