如何转换为使用Dom解析到使用SAX解析

时间:2009-07-16 13:08:13

标签: java xml dom parsing sax

我正在使用DOM将XML文档解析为我自己的结构,但在另一个question我被建议使用SAX,我将如何转换以下内容:

public static DomTree<String> createTreeInstance(String path) 
  throws ParserConfigurationException, SAXException, IOException {
    DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = docBuilderFactory.newDocumentBuilder();
    File f = new File(path);
    Document doc = db.parse(f);       
    Node node = doc.getDocumentElement(); 
    DomTree<String> tree = new DomTree<String>(node);
    return tree;
}

这是我的DomTree构造函数:

    /**
     * Recursively builds a tree structure from a DOM object.
     * @param root
     */
    public DomTree(Node root){      
        node = root;        
        NodeList children = root.getChildNodes();
        DomTree<String> child = null;
        for(int i = 0; i < children.getLength(); i++){  
            child = new DomTree<String>(children.item(i));
            if (children.item(i).getNodeType() != Node.TEXT_NODE){
                super.children.add(child);
            }
        }
    }

1 个答案:

答案 0 :(得分:4)

针对SAX的编程与针对DOM的编程截然不同 - SAX是推模型,DOM是拉模型。将代码从一个代码转换为另一个代码是一项非常重要的任务。

鉴于你的情况,我建议使用STAX而不是SAX。 STAX是一种拉模型解析器API,但具有许多与SAX方法相同的优点(例如内存使用和性能)。

STAX附带Java 6,但是如果你想在Java 5中使用它,你需要下载一个STAX处理器(例如Woodstox)。 Woodstox网站有很多例子供您查看。