簡體   English   中英

解析巨大的XML文件以形成DOM樹

[英]Parsing huge XML file to form a DOM tree

我有一個巨大的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://sdiwc.us/digitlib/journal_paper.php?paper=00000582.pdf ),它將比較當今許多XML處理庫。 最好的選擇無疑對您很清楚...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM