使用c分割xml文件
本文关键字:文件 xml 分割 使用 | 更新日期: 2023-09-27 18:23:57
我使用c#,从外部数据源创建xml,并将xml保存为单个xml文件。如何将xml拆分并保存为多个xml文件?例如,假设我的xdocument xml中有263条记录。我需要将其拆分为多个xml文件,其中正好包含25条记录。(这就是规范——没有办法绕过它。)所以,对于这个例子,我最终会得到11个xml文件。
我的数据源是一个XML文件,如果比较容易的话,我可以选择将其拆分为每个XML文件25条记录的块。我该怎么做呢?
这样的东西怎么样:
string xml=@"<a>
<b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/>
<b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/>
<b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/>
<b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/>
</a>";
int itemsPerDoc = 25;
XDocument xDoc = XDocument.Parse(xml);
IEnumerable<XDocument> newDocs=
xDoc
.Root
//grab all immediate child elements of root (named "b")
.Elements("b")
//use integer division to create a group "number"
//so groups of 25 items will share same group "number"
.Select((e,i) => new {g = i/itemsPerDoc, e})
//use group "number" to perform grouping
.GroupBy(x => x.g)
//now we have groups of 25, use these 25 items
//to project into a new document containing the items
.Select(gr => {
XDocument newDoc = XDocument.Parse("<newDoc/>");
newDoc.Root.Add(gr.Select(p => p.e));
return newDoc;
});
这将返回一个IEnumerable<XDocument>
,其中每个文档包含原始XDocument
的25个子级(如果是最后一个文档,则少于25个子级)。