我有这个xml,并希望根据<order>
标签计数拆分到单个xml文件,保留基本xml中的几个标签。因为我是新手玩xml和linq,我只是在google搜索关于堆栈溢出的问题不符合我的要求。
<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来帮助解决这个问题吗?
答案 0 :(得分:4)
如果你想将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。