使用linq拆分为xml文件,从基本xml文件中保留少量标记

时间:2015-12-28 15:49:57

标签: c# xml linq

我有这个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来帮助解决这个问题吗?

1 个答案:

答案 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