-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 に答える