当前位置:  开发笔记 > 编程语言 > 正文

将xml文档拆分为块

如何解决《将xml文档拆分为块》经验,为你挑选了1个好方法。

我有一个大型的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"节点包装并具有相同的命名空间等

这可能吗?



1> Jim Burger..:

另一种天真的解决方案 这次适用于.NET 2.0.它应该让你知道如何去做你想要的.使用Xpath表达式而不是Linq to XML.在我的devbox上,在一秒钟内将100个订单分成10个数据库.

 public List ChunkDocket(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;
    }

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有