StAX Parser (XML) liefert nicht alle tags

mkoeni1

Erfahrenes Mitglied
Hallo Community,

ich versuche mich jetzt schon länger mit dem Parsen einer XML Datei in Java 1.6 mit dne Interfaces/Klassen die im ersten Code-Ausschnitt stehen:
Zunächst vorneweg erzeuge ich mit:
Code:
public void getEvents() throws FileNotFoundException, XMLStreamException {
        // XMLStreamReader erzeugen
        XMLInputFactory xif = XMLInputFactory.newInstance();
        XMLStreamReader reader = xif.createXMLStreamReader(new FileInputStream("src/xml/nummer.xml"));
zwei Objekte und übergebe hierbei den Pfad zur XML-Datei. Ich setzte NetBeans in der Version 5.5 ein.

Code:
 // Am Startelement springen und Name pruefen
        while(reader.hasNext()) {
            
            int eventType = reader.next();
            
            //switch the eventType
            switch(eventType) {
                
                // case START_ELEMENT
                case XMLStreamConstants.START_ELEMENT:
                    System.out.println("<"+reader.getLocalName()+">");
                    for( int i = 0; i < reader.getAttributeCount(); i++ ){
                        System.out.println(reader.getAttributeName(i)+"=");
                        System.out.println("'"+reader.getAttributeValue(i)+"'");
                    }
                    ;break;
                    
                
                 
                    // case END_ELEMENT
                case XMLStreamConstants.END_ELEMENT:
                    System.out.println("</"+reader.getName()+">");
            }//case
            
        }//while
        
    } // end method getEvents
Zu meiner Ausgabe: Er gibt mir alle Tags- mit Attribute aus.
Code:
<tel nummer="018057676" id="1"></tel>
Er verweigert mir aber die Ausgabe der Text only Elemente, wie:
Code:
<name>Maier</name>
Die zu parsende XML Datei sieht so aus:
Code:
<tel nummer="018057676" id="1">
<name>Maier</name>
<adresse>
<strasse>uhland</strasse>
<hnr>13<hnr>
</adresse>
</tel>
Die Funktionen müssten hier stehen !?
Irgendwie bin ich zu blind :-(

Weiß jmd. einen Rat ?
M
 
Zuletzt bearbeitet:
Hallo,

ich bekomme mit:
Java:
/**
 * 
 */
package de.tutorials;

import java.io.FileInputStream;

import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamReader;

/**
 * @author Tom
 */
public class StAXPerserExample {

  /**
   * @param args
   */
  public static void main(String[] args) throws Exception {
    XMLStreamReader xmlStreamReader = XMLInputFactory.newInstance().createXMLStreamReader(
      new FileInputStream("data.xml"));

    while (xmlStreamReader.hasNext()) {
      switch (xmlStreamReader.next()) {
        case XMLStreamConstants.START_ELEMENT:
          handleStartElement(xmlStreamReader);
          break;
        case XMLStreamConstants.END_ELEMENT:
          handleEndElement(xmlStreamReader);
          break;
        case XMLStreamConstants.CHARACTERS:
          handleCharacters(xmlStreamReader);
          break;
        default:
      }
    }
    xmlStreamReader.close();
  }


  private static void handleCharacters(XMLStreamReader xmlStreamReader) {
    System.out.print(xmlStreamReader.getText().trim());
  }


  private static void handleEndElement(XMLStreamReader xmlStreamReader) {
    System.out.print("</" + xmlStreamReader.getName() + ">");
  }


  private static void handleStartElement(XMLStreamReader xmlStreamReader) {
    System.out.print("<" + xmlStreamReader.getName());
    int cnt = xmlStreamReader.getAttributeCount();
    for (int i = 0; i < cnt; i++) {
      System.out
        .print(xmlStreamReader.getAttributeName(i) + "=\"" + xmlStreamReader.getAttributeValue(i) + "\"");
      if (i + 1 < cnt) {
        System.out.print(" ");
      }
    }
    System.out.print(">");
  }
}

für: (data.xml)
XML:
<root>
    <tel nummer="018057676" id="1">
        <name>Maier</name>
        <adresse>
            <strasse>uhland</strasse>
            <hnr>13</hnr>
        </adresse>
    </tel>
</root>

Folgende Ausgabe:
Code:
<root><telnummer="018057676" id="1"><name>Maier</name><adresse><strasse>uhland</strasse><hnr>13</hnr></adresse></tel></root>

Gruß Tom
 
Zuletzt bearbeitet von einem Moderator:
Mensch bin ich blind. Ich habe die "break"s vergessen !
Danke Tom für die Lehrstunde in Sachen StAX.

Gruß
m
 
Zurück