我有一个大 xml,我需要将其拆分为较小的一个。
问问题
150 次
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 回答