2012-11-30 50 views
1
<root> 
    <element1>innertext</element1> 
    <element2>innertext</element2> 
    <element3> 
     <child1>innertext</child1> 
    </element3> 
</root> 

我有上面顯示的xml結構。在這個xml結構中添加一個元素

我想「附加」的XML文件(它已經創建)以添加另一個「孩子」裏面元素3>,這樣它看起來就像這樣:

<root> 
    <element1>innertext</element1> 
    <element2>innertext</element2> 
    <element3> 
     <child1>innertext</child1> 
     <child2>innertext</child2> 
    </element3> 
</root> 

的LINQ to XML和/或XPath將是巨大的

編輯: 我也試着這樣做:

XElement doc = XElement.Load(mainDirectory); 
XElement newElem = doc.Elements("element3").First(); 
newElem.Add(new XElement("child2", "child2innertext")); 
doc.Add(newElem); 
doc.Save(mainDirectory); 

回答

2

用的XDocument就可以實現這個爲:

string xml = "<root><element1>innertext</element1><element2>innertext</element2><element3><child1>innertext</child1></element3></root>"; 

var doc = XDocument.Parse(xml); //use XDocument.Load("filepath"); in case if your xml is in a file. 

var el3 = doc.Descendants("element3").FirstOrDefault(); 

el3.Add(new XElement("child2", "innertext")); 
+0

您的回答Murali和Azhar工作。謝謝! – Mikk

3
XmlDocument xDoc = new XmlDocument(); 
     xDoc.Load("filename.xml"); 

     foreach (XmlNode xNode in xDoc.SelectNodes("/root/element3")) 
     { 
      XmlElement newElement = xDoc.CreateElement("Child2"); 


      xNode.AppendChild(newElement); 
      xNode.InnerText = "myInnerText"; 
     } 
+0

你的回答穆拉利和愛資哈爾工作。謝謝! – Mikk

1

請嘗試這個LINQPAD例如

void Main() 
{ 
var xml = 
@"<root> 
     <element1>innertext</element1> 
     <element2>innertext</element2> 
     <element3> 
      <child1>innertext</child1> 
     </element3> 
    </root>"; 

    var doc = XDocument.Parse(xml); 
    doc.Root.Element("element3") 
    .Add(new XElement("child2", "innertext")); 

    doc.Dump(); 
} 
相關問題