2011-09-15 17 views
6

Bir XML dosyasını bir StAX XML ayrıştırıcısıyla ayrıştırmaya çalışıyorum. Bana START_ELEMENT ve END_DOCUMENT olayları veriyor ama ATTRIBUTE olayları yok. StAX ayrıştırıcısına sahip ATTRIBUTE olaylarını nasıl alabilirim?Öznitelik olayları StAX XML ayrıştırıcısıyla nasıl yakalanır?

Benim XML:

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

My StAX XML ayrıştırıcı: Eğer START_ELEMENT durumdayken

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

} 

cevap

3

bütün bile Öznitelikler'i garip bir şeydir ve Blaise belirtildiği gibi olay tabanlı arayüzünü kullanırken, bunlar ayrı ayrı rapor edilmemiştir. Bu, özniteliklerin başlangıç ​​öğesinin "parçası" olduğu ve bu nedenle ayrıştırıcılar tarafından ele alınması gerektiğinden (benzersizliği doğrulamak için ad alanlarını vb.

İlgili konular