2017-06-05 3 views
0

ich einen Abschnitt mit Tag-Namen genannt Eigenschaften hinzufügen möchten, und haben ein Elementwert genannt Eigenschaft mit mehreren Werten, wie Knotenname, WertElemente mehrere Werte in # XDocument C hinzufügen

org XML-Datei wie diese

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

Nach Add, ich will es zeigen wie diese

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

der Code, den ich schrieb einige Probleme hat, ist es tatsächlich schaffen zweizeilige von Eigentum, aber ich möchte, dass sie als eine Zeile. Wie sollte ich meinen Code aktualisieren? Scheint auch letzten zwei Zeile hat Probleme. i erhalten Fehler "Objektverweis nicht auf eine Instanz eines Objekts festgelegt"

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

Antwort

0

folgenden Code Versuchen:

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

Edit: In Element auf das erste Element des XDocument

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

Wenn Sie allen Ihren Testsuite-Elementen neue Elemente hinzufügen möchten:

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")))); 
} 

das Dokument XML speichern

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

Ich erhalte eine Fehlermeldung zeigt „Objektverweis nicht auf eine Instanz eines Objekts.“ mit Ihrer Lösung –

+0

Und wenn ich das zu doc.Element ändern ("testsuites"). Add (neues XElement ("Eigenschaften", neues XElement ("Eigenschaft", neues XAttribute ("Name", "Name"), neues XAttribute ("Wert", "Wunschwert")))); dann ist es in Ordnung für die Kompilierung, aber das ist nicht was ich will. Was ist der Unterschied zwischen doc.Element ("testsuites") und doc.Element ("testsuite") –

+0

Bitte beachten Sie meine aktualisierte Antwort –

Verwandte Themen