将Xml元素复制到C#中的另一个文档

时间:2012-03-08 01:43:01

标签: c# xml

我搜索了很多地方,看过很多例子,但是我仍然无法在我想要的地方为我的XML添加节点。

这是我的问题

我有一个XML文件,我的程序将读取该文件,以便将其用作我的新XML文件的模板。但正如我所说,我创建的“XML模板”只有最一般的定义,这意味着我需要读取该模板的一个特定节点,将其添加到新的xml中,创建新节点和它们到新的xml文件

模板XML:

<A>
  <B>
    <c>element 1</c>
    <d>element 2</d>
    <e>element 3</e>
  </B>
  <B>
    <c>element 4</c>
    <d>element 5</d>
    <e>element 6</e>
  </B>
</A>

这是我需要创建的新文件:

<A>
  <B>
    <c>element 7</c>
    <d>element 8</d>
    <e>element 9</e>
    <f>element 10</f>
    <g>element 11</g>
  </B>
<B>
    <c>element 12</c>
    <d>element 13</d>
    <e>element 14</e>
    <f>element 15</f>
    <g>element 16</g>
  </B>
</A>

正如您可以看到下面的结构

<A>
  <B>
    <c>element 7</c>
    <d>element 8</d>
    <e>element 9</e>
  </B>
</A>

我需要从我的模板xml复制到我的新xml文件,(选择哪个节点取决于用户),但是该特定节点将被复制到新的xml,然后我需要添加一些节点到我已复制到新文件的节点,使其更完整。我需要将它们添加到B标签中。

在我能够做到这一点之后,我需要让用户继续增长新的xml文件,方法是添加更多模板节点并将它们堆叠在A标签之间。

我已经成功复制了xml模板节点并将其添加到新文件中,但是我无法添加新节点,也没有能够保持xml不断增长,每次我添加B节点到它之前订阅的节点。

如果有人知道如何帮助我,我将非常感激,因为今天是我使用XML的第一天

1 个答案:

答案 0 :(得分:2)

我建议使用LINQ TO XML我认为它简单易行。     以下是如何使用LInq

读取xml的示例
   XDocument xmlDoc = XDocument.Load(Server.MapPath("XMLFile.xml"));

    var persons = (from elements in xmlDoc.Descendants("A")
    where elements.Element("c").Value==//VALUE YOU LOOKING TO GET 
    select new
    {
    c = elements.Element("c").Value,
    d = elements.Element("d").Value,
    e = elements.Element("e").Value,
    }).FirstOrDefault();
    /// ADD ELEMENT TO ANOTHER XML

XDocument xmlDoc = XDocument.Load(Server.MapPath(“AnotherXMLFile.xml”));

    xmlDoc.Element("A").Add(new XElement("B", new XElement("e", persons.e)));

这是一个非常好的教程

http://www.aspnettutorials.com/tutorials/xml/linq-to-xml-adding-cs.aspx