Frage

Ich analysiere ein XML -Dokument mit DOM, aber in einem anderen in meine eigene Struktur Frage Mir wurde geraten, SAX zu verwenden, wie würde ich Folgendes konvertieren:

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;
}

Hier ist mein Domtree -Konstruktor:

    /**
     * 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);
            }
        }
    }
War es hilfreich?

Lösung

Die Programmierung gegen SAX unterscheidet sich zutiefst von der Programmierung gegen DOM - SAX ist ein Push -Modell, DOM ist ein Pull -Model. Das Konvertieren Ihres Codes von einem in den anderen ist eine sehr nicht triviale Aufgabe.

In Anbetracht Ihrer Situation würde ich eher die Verwendung von SAX als SAX verwenden. STAX ist eine Pull-Model-Parser-API, hat jedoch viele der gleichen Vorteile des SAX-Ansatzes (z. B. Speicherverwendung und Leistung).

Stax wird mit Java 6 geliefert, aber wenn Sie es mit Java 5 verwenden möchten, müssen Sie einen Staax -Prozessor herunterladen (z. B. Woodstox). Die Woodstox -Site hat viele Beispiele für Sie, die Sie ansehen können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top