我有两个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做这样的过程?
答案 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");