程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

解析庞大的XML文件形成DOM树

发布于2023-03-30 18:49     阅读(980)     评论(0)     点赞(6)     收藏(0)


我有一个巨大的 XML 文件(大约 904Mb),我的目标是使用以下代码将其形成一个 DOM 树:

    org.w3c.dom.Node html  = null;

     DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
        org.w3c.dom.Document doc = builder.parse(new File("xml_file");
        html=doc.getFirstChild();

           DocumentTraversal traversal = (DocumentTraversal) doc;

        NodeIterator iterator = traversal.createNodeIterator(
          doc.getDocumentElement(), NodeFilter.SHOW_ELEMENT, null, true);

        for (Node n = iterator.nextNode(); n != null; n = iterator.nextNode()) {
            System.out.println("Element: " + ((Element) n).getTagName());
            String tagname = ((Element) n).getTagName();

            NamedNodeMap map = ((Element)n).getAttributes();
            if(map.getLength() > 0) {

                    for(int i=0; i<map.getLength(); i++) {
                        Node node = map.item(i);
            System.out.println(node.getNodeName());

                                     }
                                                          }

然而,由于 XML 文件很大,创建 DOM 树需要很长时间。这样做有什么特别的技巧吗?


解决方案


使用StAX 库StAX 是一种基于事件的拉式 API 来处理 XML。StAX 将 inputStream 作为参数,因此不会将整个 XML DOM 加载到内存中,并且它的内存占用很小。

页面列出了使用 StAX 的原因以及与其他方法的比较。



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/666424/4b27178e609e3bdc5b7b/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

6 0
收藏该文
已收藏

评论内容:(最多支持255个字符)