Pergunta

Estou analisando um documento XML em minha própria estrutura usando DOM, mas em outro pergunta Fui aconselhado a usar sax, como eu converteria o seguinte:

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

Aqui está o meu construtor de 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);
            }
        }
    }
Foi útil?

Solução

A programação contra o Sax é profundamente diferente da programação contra o DOM - Sax é um modelo de push, o DOM é um modelo de tração. Converter seu código de um para o outro é uma tarefa muito não trivial.

Dada a sua situação, eu recomendaria usar Stax em vez de sax. O STAX é uma API de analisador de modelos puxadas, mas tem muitas das mesmas vantagens da abordagem Sax (por exemplo, uso e desempenho de memória).

Stax vem com Java 6, mas se você quiser usá -lo com Java 5, você precisa baixar um processador STAX (por exemplo Woodstox). O site Woodstox tem muitos exemplos para você olhar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top