在XDocument C#

时间:2017-06-05 23:36:21

标签: c# xml junit

我想添加一个名为properties的标记名称的部分,并且有一个名为property的项值具有多个值,如节点名称,值

org xml文件就像这样

<testsuites>
    <testsuite>
        blah blah
    </testsuite>
</testsuites>

添加后,我希望它显示如下

<testsuites>
    <testsuite>
        <properties>
        <property name="name" "value"="desirevalue"/>
        </properties>
        blah blah
    </testsuite>
</testsuites>

我写的代码有一些问题,它实际上创建了两行属性,但我希望它们作为一行。我该如何更新我的代码?也似乎最后两行有问题。我得到“对象引用未设置为对象的实例”错误

XDocument doc = XDocument.Load(fileOfReportInXML);
XElement root= new XElement("properties");
root.Add(new XElement("property", "name= node"));
root.Add(new XElement("property","value=desirevalue"));
doc.Element("testsuite").Add(root);
doc.Save(fileOfReportInXML);

1 个答案:

答案 0 :(得分:0)

请尝试以下代码:

//Load XML file
XDocument doc = XDocument.Load(fileOfReportInXML);

编辑:将元素添加到xdocument的第一个元素

doc.Root.Elements("testsuite").First().Add(new XElement("properties", new XElement("property", new XAttribute("name", "name"), new XAttribute("value", "desirevalue"))));

如果您想为所有测试元素添加新元素:

foreach (var element in doc.Root.Elements("testsuite"))
{
     //Skip adding element if element already exists
     if (element.HasElements && element.Element("properties") != null) continue;

     element.Add(new XElement("properties", new XElement("property", new XAttribute("name", "name"), new XAttribute("value", "desirevalue"))));
}

保存XML文档

//Save XML file
doc.Save(fileOfReportInXML);