hi,
ich versuche gerade einen stax parser sinnvoll einzuseten, stolpere aber über ein problem, dass ich mir nicht so recht erklären kann.
folgender code funktioniert:
dabei gibt er mir immer den text aus, der zwischen den tags des xml files liegt.
soweit so gut.
jetzt möchte ich, dass er mir nur den text ausgiebt, der zwischen bestimmten tags liegt.
hier kriege ich die Fehlermeldung:
Exception in thread "main" java.lang.IllegalStateException: Current state START_ELEMENT is not among the statesCHARACTERS, COMMENT, CDATA, SPACE, ENTITY_REFERENCE, DTD valid for getText()
at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.getText(XMLStreamReaderImpl.java:1061)
at Parser2.main(Parser2.java:39)
Java Result: 1
die frage ist, warum bekomme, ich bei zeile 18 im 2. beispiel einen fehler, im 1. beispiel bei zeile 15 aber nicht?
sie unterscheiden sich doch gar nicht.
ich versuche gerade einen stax parser sinnvoll einzuseten, stolpere aber über ein problem, dass ich mir nicht so recht erklären kann.
folgender code funktioniert:
Java:
public class Parser {
static File readXML = new File( "C:\\test.xml" );
static String text = null;
public static void main( String[] args ) throws XMLStreamException {
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
XMLStreamReader stax = inputFactory.createXMLStreamReader( new StreamSource (readXML) );
while( stax.hasNext() ) {
stax.next();
if ( stax.hasText() ) {
text = stax.getText();
System.out.print( text + "test\n");
}
}
}
}
soweit so gut.
jetzt möchte ich, dass er mir nur den text ausgiebt, der zwischen bestimmten tags liegt.
Java:
public class Parser2 {
static File readXML = new File( "C:\\test.xml" );
static String text = null;
static String name = null;
public static void main( String[] args ) throws XMLStreamException {
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
XMLStreamReader stax = inputFactory.createXMLStreamReader( new StreamSource (readXML) );
while( stax.hasNext() ) {
System.out.println( "Event: " + stax.getEventType() );
switch ( stax.getEventType() ) {
case XMLStreamConstants.START_ELEMENT:
name = stax.getName().getLocalPart();
System.out.println( name );
if ( name.equals("fnr") ) {
text = stax.getText();
System.out.print( name + " Fahrzeugnummer: " + text + "\n");
}
break;
}
stax.next();
}
}
}
Exception in thread "main" java.lang.IllegalStateException: Current state START_ELEMENT is not among the statesCHARACTERS, COMMENT, CDATA, SPACE, ENTITY_REFERENCE, DTD valid for getText()
at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.getText(XMLStreamReaderImpl.java:1061)
at Parser2.main(Parser2.java:39)
Java Result: 1
die frage ist, warum bekomme, ich bei zeile 18 im 2. beispiel einen fehler, im 1. beispiel bei zeile 15 aber nicht?
sie unterscheiden sich doch gar nicht.