将元素从一个xml文件移动到另一个xml文件

时间:2014-12-27 23:39:18

标签: c# xml linq

我有两个XML文件,它们包含以下元素(item元素及其子元素):

<warehouse>
   <cat id="computer">
    <item>
      <SN>value</SN>
      <name>value</name>
      <quantity>value</quantity>
      <description>value </description>
      <price>value</price>
    </item>
   </cat>
   <cat id="Stationery">
    <item>
      <SN>value</SN>
      <name>value</name>
      <quantity>value</quantity>
      <description>value </description>
      <price>value</price>
    </item>
   </cat>
</warehouse>

//我这里有以下代码删除这些元素(item元素及其子元素)。

xmlDoc.Root.Descendants("cat").Where(x => x.Attribute("id").Value == "computer")
      .Descendants("item").Where(x => x.Element("SN").Value.Trim() == Dropdownlist.Text)
      .Remove();
xmlDoc.Save(@"YourXML.xml");

我想要的是在删除它们之前将这些元素从第一个xml文件复制到第二个xml文件。 我怎么能用LINQ做这样的过程?

1 个答案:

答案 0 :(得分:2)

您可以先轻松存储查询结果,将副本添加到其他XDocument实例,然后调用Remove

var itemsToRemove = xmlDoc.Root.Descendants("cat")
                               .Where(x => x.Attribute("id").Value == "computer")
                               .Descendants("item")
                               .Where(x => x.Element("SN").Value.Trim() == Dropdownlist.Text)
                               .ToList();

// Add is smart enough to perform deep clone of your XML structure on add
otherDoc.Root.Element("cat").Add(itemsToRemove);

itemsToRemove.Remove();

xmlDoc.Save(@"YourXML.xml");