2

DOM を使用して XML ドキュメントを独自の構造に解析していますが、別の質問で、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);
            }
        }
    }
4

1 に答える 1

4

SAX に対するプログラミングは、DOM に対するプログラミングとは大きく異なります。SAX はプッシュ モデルであり、DOM はプル モデルです。コードをあるコードから別のコードに変換することは、非常に簡単な作業ではありません。

あなたの状況を考えると、SAX ではなく STAX を使用することをお勧めします。STAX はプル モデル パーサー API ですが、SAX アプローチと同じ多くの利点 (メモリ使用量やパフォーマンスなど) があります。

STAX には Java 6 が付属していますが、Java 5 で使用する場合は、STAX プロセッサ (例: Woodstox ) をダウンロードする必要があります。Woodstox のサイトには、参考になる例がたくさんあります。

于 2009-07-16T13:18:17.497 に答える