2017-06-05 78 views
0

我想補充與標籤名稱叫性質的部分,並有多個值一個項目的值稱爲屬性,如節點名稱,值添加元素的XDocument C#多值

組織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); 

回答

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); 
+0

我得到顯示錯誤「對象引用不設置到對象的實例。」與你的解決方案 –

+0

如果我改變它到doc.Element(「testsuites」)。添加(新的XElement(「屬性」,新的XElement(「屬性」,新的XAttribute(「名稱」,「名稱」),新的XAttribute 「value」,「desirevalue」))));那麼編譯就好了,但那不是我想要的。 doc.Element(「testsuites」)和doc.Element(「testsuite」)之間的區別是什麼 –

+0

請看我更新的答案 –