首页 > 解决方案 > 如何使用 C# 在 XML 文档中添加新元素

问题描述

我需要的是向已经存在的 XML 文档添加一个新元素。这是 XML:

在此处输入图像描述

我需要的是将此元素添加到元素的末尾

 <DATA>
    <UBL21>true</UBL21>
    <Partnership>
        <ID>900430556</ID>
        <TechKey>20c68c93ee595efaf227db3bc5d0e3416776bc487ec7058b9157c874eaa741a2</TechKey>
        <SetTestID>dsfgsdghfsdgfsdfg</SetTestID>
    </Partnership>
</DATA>

预期结果

在此处输入图像描述

这是我创建 xml 的方法

public void guardar_nuevo_xml(InvoiceType df, string numero_factura)
{
    //Here start xml df is an object from which I serialize the xml
    XmlSerializer x = new XmlSerializer(df.GetType());
    //path for save new document
    string path = @"C:\Users\moralesm\source\repos\Pruebas_Nilo\Nilo\xml\Factura" + numero_factura + ".xml";
    //write the new xml
    TextWriter writer = new StreamWriter(path);
    // the new xml is serialized with an object
    x.Serialize(writer, df);

}

标签: c#xml.net-corexmlserializerxpathnavigator

解决方案


您可以像这样添加元素:

 XDocument doc1 = XDocument.Load("Your Xml Path"); 
 XElement dataElement = new XElement("DATA");
 doc1.Root.Add(dataElement);
 dataElement.Add(new XElement("UBL21", "true"));
 XElement partnerShipElement = new XElement("Partnership");
 dataElement.Add(partnerShipElement); 
 partnerShipElement.Add(new XElement("ID", "900430556"));
 partnerShipElement.Add(new XElement("TechKey", "20c68c93ee595efaf227db3bc5d0e3416776bc487ec7058b9157c874eaa741a2"));
 partnerShipElement.Add(new XElement("SetTestID", "dsfgsdghfsdgfsdfg"));

我的测试 XML:

<test>
  <name>Hidayet</name>
</test> 

新 XML:

<test>
  <name>Hidayet</name>
  <DATA>
    <UBL21>true</UBL21>
    <Partnership>
      <ID>900430556</ID>
      <TechKey>20c68c93ee595efaf227db3bc5d0e3416776bc487ec7058b9157c874eaa741a2
      </TechKey>
      <SetTestID>dsfgsdghfsdgfsdfg</SetTestID>
    </Partnership>
  </DATA>
</test>

保存新的 xml 文件:

doc1.Save("New Xml File Path");

推荐阅读