如何附加到xml

本文关键字:xml 何附加 | 更新日期: 2023-09-27 18:26:39

我有这个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>

如何附加到xml

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

如果您的意思是使用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片段在哪里——在文件/字符串中?

如果您有以下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