我有一个大型的xml文档,需要一次处理100条记录
它是在用c#编写的Windows服务中完成的.
结构如下:
2008-10-13 050758023 sddsf dsfd sdf sdfsdd sdfdsfdf dffddf ..... ..... 2008-10-13 050758023 sddsf dsfd sdf sdfsdd sdfdsfdf dffddf
在一个案卷中可能会有成千上万的订单.
我需要将其切成100个元素块
但是,100个订单中的每一个仍然需要用父"docket"节点包装并具有相同的命名空间等
这可能吗?
另一种天真的解决方案 这次适用于.NET 2.0.它应该让你知道如何去做你想要的.使用Xpath表达式而不是Linq to XML.在我的devbox上,在一秒钟内将100个订单分成10个数据库.
public ListChunkDocket(XmlDocument docket, int chunkSize) { List newDockets = new List (); // int orderCount = docket.SelectNodes("//docket/order").Count; int chunkStart = 0; XmlDocument newDocket = null; XmlElement root = null; XmlNodeList chunk = null; while (chunkStart < orderCount) { newDocket = new XmlDocument(); root = newDocket.CreateElement("docket"); newDocket.AppendChild(root); chunk = docket.SelectNodes(String.Format("//docket/order[position() > {0} and position() <= {1}]", chunkStart, chunkStart + chunkSize)); chunkStart += chunkSize; XmlNode targetNode = null; foreach (XmlNode c in chunk) { targetNode = newDocket.ImportNode(c, true); root.AppendChild(targetNode); } newDockets.Add(newDocket); } return newDockets; }