使用linq将基本xml文件拆分为保留少量标记的xml文件
本文关键字:xml 文件 保留 拆分 linq 使用 | 更新日期: 2023-09-27 18:28:12
我有这个xml,并希望根据<order>
标记计数拆分为单独的xml文件,从基本xml中保留几个标记。由于我是xml和linq的新手,所以我只是在谷歌上搜索,关于堆栈溢出的问题不符合我的要求。
<OrderList>
<Source>xml</Source>
<Organisation>org</Organisation>
<CreationDate>12/14/2015</CreationDate>
<Orders>
<Order>
<Name> Mobile </Name>
<Price> 50.00</Price>
<Quantity> 1 </Quantity>
</Order>
<Order>
<Name> Accessories </Name>
<Price> 50.00</Price>
<Quantity> 5 </Quantity>
</Order>
</Orders>
</OrderList>
所以File1.xml应该是
<OrderList>
<Source>xml</Source>
<Organisation>org</Organisation>
<CreationDate>12/14/2015</CreationDate>
<Orders>
<Order>
<Name> Mobile </Name>
<Price> 50.00</Price>
<Quantity> 1 </Quantity>
</Order>
</Orders>
</OrderList>
File2.xml
<OrderList>
<Source>xml</Source>
<Organisation>org</Organisation>
<CreationDate>12/14/2015</CreationDate>
<Orders>
<Order>
<Name> Accessories </Name>
<Price> 50.00</Price>
<Quantity> 5 </Quantity>
</Order>
</Orders>
</OrderList>
stackoverflow中前面的问题解释了如何将标记拆分到xml文件中,但我也想从基本文件中保留一些值。有人能用Linq和XElement帮忙吗?
如果你想将Orders
拆分为两个OrderList
,你可以尝试这样的方法,你不需要创建同一个节点,它将从ordersXML中复制,并创建新的Orders
:
XElement ordersXML = XElement.Parse(XML_ORDERS);
var ordersElement = ordersXML.Element("Orders");
var orders = ordersElement.Elements("Order");
var newOrdersList = orders.Select(x => new XStreamingElement("OrderList", ordersXML.Elements().Where(e => e.Name!="Orders"), new XElement("Orders",x)));
看看我的.NET Fiddle。