-4

我有一个大 xml,我需要将其拆分为较小的一个。

4

1 回答 1

1

使用MoreLINQ(可从 NuGet 获得),您可以将订单拆分为批次,然后从批次中构建新文档:

XDocument xdoc = XDocument.Load("orders.xml");
int batchSize = 2;
int batchIndex = 0; 

foreach(var orders in xdoc.Descendants("order").Batch(batchSize))
{
    XDocument doc = new XDocument(new XElement("orders", orders));
    doc.Save(String.Format("orders-{0}.xml", batchIndex++));
}

这将创建新文档,每个文档都包含batchSize里面的订单(好吧,最后一个可以包含更少的订单)。订单将放置在<orders>根标签下。


您甚至可以在单个查询中完成所有操作

xdoc.Descendants("order").Batch(batchSize)
    .Select((orders, index) => new { orders, index })
    .ForEach(batch => {
        XDocument doc = new XDocument(new XElement("orders", batch.orders));
        doc.Save(String.Format("orders-{0}.xml", batch.index));
    });
于 2013-07-29T08:24:16.707 回答