2009-07-16 6 views
2

J'analyse d'un document XML dans ma propre structure en utilisant DOM, mais dans un autre question m'a conseillé d'utiliser SAX, comment pourrais-je convertir les éléments suivants:Comment convertir l'analyse syntaxique avec Dom à l'analyse syntaxique 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; 
} 

Voici mon constructeur 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); 
      } 
     } 
    } 
+0

Vous pouvez également rechercher vtd-xml, qui est plus efficace que DOM et SAX –

Répondre

4

programmation contre SAX est profondément différente de la programmation contre DOM - SAX est un modèle push, DOM est un modèle de traction. La conversion de votre code de l'un à l'autre est une tâche très simple. Compte tenu de votre situation, je recommanderais d'utiliser STAX plutôt que SAX. STAX est une API d'analyseur par extraction, mais présente les mêmes avantages que l'approche SAX (par exemple, l'utilisation de la mémoire et les performances). STAX est livré avec Java 6, mais si vous voulez l'utiliser avec Java 5, vous devez télécharger un processeur STAX (par exemple Woodstox). Le site Woodstox a beaucoup d'exemples à vous montrer.