2011-09-15 15 views
6

Intento analizar un archivo XML con un analizador XML StAX. Me da eventos START_ELEMENT y END_DOCUMENT pero no eventos ATTRIBUTE. ¿Cómo puedo recibir eventos ATTRIBUTE con el analizador StAX?¿Cómo atrapar Attribute-events con un StAX XML-parser?

Mi XML:

<?xml version="1.0" encoding="utf-8"?> 
    <posts> 
     <row name="Jonas"/> 
     <row name="John"/> 
    </posts> 

Mi StAX XML parser:

public class XMLParser { 

    public void parseFile(String filename) { 
     XMLInputFactory2 xmlif = (XMLInputFactory2) XMLInputFactory2.newInstance(); 
     xmlif.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES, Boolean.FALSE); 
     xmlif.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, Boolean.FALSE); 
     xmlif.setProperty(XMLInputFactory.IS_COALESCING, Boolean.FALSE); 
     xmlif.configureForSpeed(); 

     XMLStreamReader2 xmlr = (XMLStreamReader2) 
       xmlif.createXMLStreamReader(new FileInputStream(filename)); 

       int eventType; 
       while(xmlr.hasNext()) { 
        eventType = xmlr.next(); 
        switch(eventType) { 
        case XMLStreamConstants.START_ELEMENT: 
         if(xmlr.getName().toString().equals("row")) { 
          System.out.println("row"); 
         } 
         break; 
        case XMLStreamConstants.ATTRIBUTE: 
         System.out.println("Attribute"); 
         break; 
        case XMLStreamConstants.END_DOCUMENT: 
         System.out.println("END"); 
         xmlr.close(); 
         break; 
        } 
       } 

    } 

    public static void main(String[] args) { 
     XMLParser p = new XMLParser(); 
     String filename = "data/test.xml"; 
     p.parseFile(filename); 
    } 

} 

Respuesta

3

El conjunto de atributos aún es una cosa extraña, y como se ha mencionado Blaise, que no constan por separado cuando se utiliza la interfaz basada en eventos. Esto debido a que los atributos son "parte de" elemento de inicio y necesitan ser manejados como tales por analizadores (para verificar la unicidad, enlazar espacios de nombres, etc.).

Cuestiones relacionadas