C# 使用linq将基本xml文件拆分为xml文件,保留少量标记

C# 使用linq将基本xml文件拆分为xml文件,保留少量标记,c#,xml,linq,C#,Xml,Linq,我有这个xml,希望根据标记计数将其拆分为单独的xml文件,保留基本xml中的一些标记。由于我是xml和linq新手,我只是在google中搜索,有关堆栈溢出的问题不符合我的要求 <OrderList> <Source>xml</Source> <Organisation>org</Organisation> <CreationDate>12/14/2015</CreationDate> <Orders&g

我有这个xml,希望根据
标记计数将其拆分为单独的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>

xml
组织机构
12/14/2015
可移动的
50
1.
配件
50
5.
所以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>

xml
组织机构
12/14/2015
可移动的
50
1.
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>

xml
组织机构
12/14/2015
配件
50
5.

stackoverflow中前面的问题解释了如何将标记拆分为xml文件,但我也希望保留基本文件中的一些值。有没有人可以用Linq和XElement来帮助解决这个问题?

如果您想将
订单
拆分为两个
订单列表
您可以尝试类似的方法,您不需要创建相同的节点,它将从ordersXML复制,并将创建新的
订单


因此,请参见我的。

如果您想将
订单
一分为二
订单列表
您可以尝试类似的方法,您不需要创建相同的节点,它将从ordersXML复制,并且将创建新的
订单


因此,请参见我的。

您能解释一下如何与XPathselectElement一起使用吗?我试过了,因为它有名称空间,但没有保留基本xml中的几个标记。我建议您查看以下示例:,并尝试一下。您能解释一下如何与XPathselectElement一起使用吗?我试过了,因为它有名称空间,但没有保留基本xml中的几个标记。我建议您查看以下示例:,然后尝试一下
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)));