2012-03-03 85 views
4

我有这个xml。如何追加到xml

<project> 
    <user> 
     <id>1</id> 
     <name>a</name> 
    </user> 
    <user> 
     <id>2</id> 
     <name>b</name> 
    </user> 
</project> 

现在怎么可以追加一个新元素这样的元素<project></project>

<user> 
    <id>3</id> 
    <name>c</name> 
</user> 
+1

的Notepad.exe,您可以编辑文本 – 2012-03-03 23:48:30

+0

你到那到AppendChild中? http://msdn.microsoft.com/en-us/library/system.xml.xmlnode.appendchild.aspx – WorldIsRound 2012-03-03 23:50:30

回答

6
string xml = 
    @"<project> 
     <user> 
      <id>1</id> 
      <name>a</name> 
     </user> 
     <user> 
      <id>2</id> 
      <name>b</name> 
     </user> 
    </project>"; 

XElement x = XElement.Load(new StringReader(xml)); 
x.Add(new XElement("user", new XElement("id",3),new XElement("name","c"))); 
string newXml = x.ToString(); 
3

之间。如果你的意思是用C#则可能是最简单的方法就是了加载XML到XmlDocument对象,然后添加一个表示附加元素的节点。

例如类似于:

string filePath = "original.xml"; 

XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.Load(filePath); 
XmlElement root = xmlDoc.DocumentElement; 

XmlNode nodeToAdd = doc.CreateElement(XmlNodeType.Element, "user", null); 
XmlNode idNode = doc.CreateElement(XmlNodeType.Element, "id", null); 
idNode.InnerText = "1"; 
XmlNode nameNode = doc.CreateElement(XmlNodeType.Element, "name", null); 
nameNode.InnerText = "a"; 

nodeToAdd.AppendChild(idNode); 
nodeToAdd.AppendChild(nameNode); 


root.AppendChild(nodeToAdd); 

xmlDoc.Save(filePath); // Overwrite or replace with new file name 

但是你没有说过xml片段在哪里 - 在文件/字符串中?

+0

实际上并不是最简单的方法,但我喜欢看到XmlDocument仍然在行动,+1 – 2012-03-04 00:33:43

1

如果您有以下XML文件:

<CATALOG> 
    <CD> 
    <TITLE> ... </TITLE> 
    <ARTIST> ... </ARTIST> 
    <YEAR> ... </YEAR> 
    </CD> 
</CATALOG> 

,你得再添<CD>节点及其所有子节点:

using System.Xml; //use the xml library in C# 
XmlDocument document = new XmlDocument(); //creating XML document 
document.Load(@"pathOfXmlFile"); //load the xml file contents into the newly created document 
XmlNode root = document.DocumentElement; //points to the root element (catalog) 
XmlElement cd = document.CreateElement("CD"); // create a new node (CD) 

XmlElement title = document.CreateElement("TITLE"); 
title.InnerXML = " ... "; //fill-in the title value 
cd.AppendChild(title); // append title to cd 
XmlElement artist = document.CreateElement("ARTIST"); 
artist.InnerXML = " ... "; 
cd.AppendChild(artist); 
XmlElement year = document.CreateElement("YEAR"); 
year.InnerXML = " ... "; 
cd.AppendChild(year); 

root.AppendChild(cd); // append cd to the root (catalog) 

document.save(@"savePath");//save the document