Problem mit SAX-Parser characters()

Status
Nicht offen für weitere Antworten.
R

Remo

Gast
hi...ich habe das PRoblem das die Methode characters() vom SAX-Parser nicht bei jedem XML aufgerufen wird.
Hier mein Code:

Code:
package ch.swisslife.prov.bp.ejbtestclient.service;

import java.io.FileReader;

import javax.xml.parsers.SAXParser;

import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;

public class TestReaderHandler extends DefaultHandler {

	public static void main(String args[]) throws Exception {
		args = new String[1];
		args[0] = "test.xml";
		
		XMLReader xr = new org.apache.xerces.parsers.SAXParser();
		TestReaderHandler handler = new TestReaderHandler();
		xr.setContentHandler(handler);
		xr.setErrorHandler(handler);

		// Parse each file provided on the
		// command line.
		for (int i = 0; i < args.length; i++) {
			FileReader r = new FileReader(args[i]);
			xr.parse(new InputSource(r));
		}
	}

	public TestReaderHandler() {
		super();
	}

	////////////////////////////////////////////////////////////////////
	// Event handlers.
	////////////////////////////////////////////////////////////////////

	public void startDocument() {
		System.out.println("Start document");
	}

	public void endDocument() {
		System.out.println("End document");
	}

	public void startElement(String uri, String name, String qName,
			Attributes atts) {
		if ("".equals(uri))
			System.out.println("Start element: " + qName);
		else
			System.out.println("Start element: {" + uri + "}" + name);
	}

	public void endElement(String uri, String name, String qName) {
		if ("".equals(uri))
			System.out.println("End element: " + qName);
		else
			System.out.println("End element:   {" + uri + "}" + name);
	}

	public void characters(char ch[], int start, int length) {
		System.out.print("Characters:    \"");
		for (int i = start; i < start + length; i++) {

			switch (ch[i]) {
			case '\\':
				System.out.print("\\\\");
				break;
			case '"':
				System.out.print("\\\"");
				break;
			case '\n':
				System.out.print("\\n");
				break;
			case '\r':
				System.out.print("\\r");
				break;
			case '\t':
				System.out.print("\\t");
				break;
			default:
				System.out.print(ch[i]);
				break;
			}
		}
		System.out.print("\"\n");
	}

}


Bei diesem XML (richtig mit test.dtd validiert) funktioniert die Ausgabe wunschgemäss:
Code:
<?xml version="1.0"?>
<!DOCTYPE poem SYSTEM "Z:\PROV\EJBTestClient\test.dtd">
<poem xmlns="http://www.megginson.com/ns/exp/poetry">
	<title>Roses are Red</title>
	<l>Roses are red,</l>
	<l>Violets are blue;</l>
	<l>Sugar is sweet,</l>
	<l>And I love you.</l>
</poem>

Bei diesem XML (richtig mit methods.dtd validiert) jedoch nicht:
Code:
<?xml version="1.0"?>
<!DOCTYPE Methodenfile SYSTEM "Z:\PROV\EJBTestClient\methods.dtd">
<Methodenfile name="methoden">
	<Methode name="hasProvisionsabrechnung" returntyp="java.lang.Boolean">
		<Parameter name="GPNR" datentyp="java.lang.Integer"/>
		<Parameter name="Monat" datentyp="java.lang.Integer"/>
		<Parameter name="Jahr" datentyp="java.lang.Integer"/>
	</Methode>
	<Methode name="getProvisionsabrechnung" returntyp="ch.swisslife.util.MimeDocument">
		<Parameter name="GPNR" datentyp="java.lang.Integer"/>
		<Parameter name="Monat" datentyp="java.lang.Integer"/>
		<Parameter name="Jahr" datentyp="java.lang.Integer"/>
	</Methode>
	<Methode name="getEVVertrag" returntyp="ch.swisslife.prov.bp.bom.PROVEVVertrag">
		<Parameter name="VertragNR" datentyp="java.lang.String"/>
		<Parameter name="Sprache" datentyp="java.lang.String"/>
		<Parameter name="GPNR" datentyp="java.lang.Integer"/>
	</Methode>
	<Methode name="getEinmaligeProvisionenZuEVVertrag" returntyp="java.util.List">
		<Parameter name="VertragNR" datentyp="java.lang.String"/>
		<Parameter name="Sprache" datentyp="java.lang.String"/>
		<Parameter name="GPNR" datentyp="java.lang.Integer"/>
	</Methode>
	<Methode name="getPROVEVKontoZuBrokerFirma" returntyp="java.util.List">
		<Parameter name="Monat" datentyp="java.lang.Integer"/>
		<Parameter name="Jahr" datentyp="java.lang.Integer"/>
		<Parameter name="Sprache" datentyp="java.lang.String "/>
		<Parameter name="GPNR" datentyp="java.lang.Integer"/>
	</Methode>
</Methodenfile>

Beim zweiten XML geht er nie in die characters Methode. Beim ersten schon
Was mache ich falsch?

Gruss Remo
 

Mag1c

Top Contributor
Hi,

nix. Ist korrekt so. Schon mal in die Attributes bei startElement(...) geschaut ?

Gruß
Mag1c
 
R

Remo

Gast
beim ersten XML File sieht die Ausgabe so aus:
Code:
Start document
Start element: {http://www.megginson.com/ns/exp/poetry}poem
Start element: {http://www.megginson.com/ns/exp/poetry}title
Characters:    "Roses are Red"
End element:   {http://www.megginson.com/ns/exp/poetry}title
Start element: {http://www.megginson.com/ns/exp/poetry}l
Characters:    "Roses are red,"
End element:   {http://www.megginson.com/ns/exp/poetry}l
Start element: {http://www.megginson.com/ns/exp/poetry}l
Characters:    "Violets are blue;"
End element:   {http://www.megginson.com/ns/exp/poetry}l
Start element: {http://www.megginson.com/ns/exp/poetry}l
Characters:    "Sugar is sweet,"
End element:   {http://www.megginson.com/ns/exp/poetry}l
Start element: {http://www.megginson.com/ns/exp/poetry}l
Characters:    "And I love you."
End element:   {http://www.megginson.com/ns/exp/poetry}l
End element:   {http://www.megginson.com/ns/exp/poetry}poem
End document

Beim zweiten (welches nicht richtig funktioniert)
Code:
Start document
Start element: Methodenfile
Start element: Methode
Start element: Parameter
End element: Parameter
Start element: Parameter
End element: Parameter
Start element: Parameter
End element: Parameter
End element: Methode
Start element: Methode
Start element: Parameter
End element: Parameter
Start element: Parameter
End element: Parameter
Start element: Parameter
End element: Parameter
End element: Methode
Start element: Methode
Start element: Parameter
End element: Parameter
Start element: Parameter
End element: Parameter
Start element: Parameter
End element: Parameter
End element: Methode
Start element: Methode
Start element: Parameter
End element: Parameter
Start element: Parameter
End element: Parameter
Start element: Parameter
End element: Parameter
End element: Methode
Start element: Methode
Start element: Parameter
End element: Parameter
Start element: Parameter
End element: Parameter
Start element: Parameter
End element: Parameter
Start element: Parameter
End element: Parameter
End element: Methode
End element: Methodenfile
End document

Wie man sieht werden beim ersten die System.out's in der Methode characters ausgegeben, beim zweiten jedoch nicht
 

Mag1c

Top Contributor
Schau doch einfach mal nach ;) :

Code:
for (int i=0; i < atts.getLength(); i++) {
    System.out.println("QName: "+atts.getQName(i));
    System.out.println("Value: "+atts.getValue(i));
}

Gruß
Mag1c
 
R

Remo

Gast
Wenn ich das erste XML-File verwende ist Attribute leer

beim zweiten hat es folgende Werte:
Code:
QName: name
Value: methoden
Start element: Methodenfile
QName: name
Value: hasProvisionsabrechnung
QName: returntyp
Value: java.lang.Boolean
Start element: Methode
QName: name
Value: GPNR
QName: datentyp
Value: java.lang.Integer
...

etc....

hmm...warum steht beim ersten nichts drin?
 

Mag1c

Top Contributor
weil

<tag>value</tag>

was anderes ist als

<tag attrib="value"></tag>

bzw. dessen Kurzform

<tag attrib ="value"/>

Lies mal eine Einführung/Tutorial zu XML.

Gruß
Mag1c
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
O XPATH Problem - Anfänger XML & JSON 4
so_ein_Komischer Problem mit Clean and Build XML & JSON 1
P JAXB-Problem XML & JSON 1
W Problem mit dem mit XML sortierung XML & JSON 2
S Jaxb Unmarshalling Problem XML & JSON 4
E einfaches Problem XML + XSD + jedit XML & JSON 2
S Xslt Problem XML & JSON 2
B JasperReport Problem in Runtime XML & JSON 2
S Problem with JAXB unmarshalling classes that have the same name in @XmlRootElement XML & JSON 2
R Problem bei: XML und XSL zu HTML XML & JSON 2
M Read / write Problem beim ByteStrom XML & JSON 2
M XML write Problem zweiter Ansatz XML & JSON 3
M XML read Problem XML & JSON 4
M XML write Problem XML & JSON 2
whitenexx Problem beim parsen von Facebook XML XML & JSON 3
M XML Unicode Problem XML & JSON 2
S XJC --> Java-Objects compile Problem XML & JSON 4
F XPath-Problem mit DOM4J XML & JSON 8
B JPA + JAXB Mapping Problem XML & JSON 2
T XPath Problem: finden einer Node nach Attributswert XML & JSON 2
G Problem beim schreiben von XML in eine File XML & JSON 2
S Encoding Problem XML & JSON 7
K JAXB und Maps -> Marshalling-Problem XML & JSON 6
B Problem beim löschen von ChildNodes aus einem XML-DOM XML & JSON 3
E JDOM - Problem beim Zusammenfügen zweier Dateien XML & JSON 2
M JExcelAPI (JXL) Encoding Problem XML & JSON 11
S DOM Parsen Problem mit HTML Sonderzeichen XML & JSON 4
A aus xml --> html Problem XML & JSON 3
Y stax Problem XML & JSON 3
slawaweis Problem mit XSLT (wahrscheinlich ein Bug in Java 6) XML & JSON 16
T Problem beim Parsen von Attribut xmlns="urn:com:test&qu XML & JSON 6
P XPath Problem XML & JSON 2
J Problem beim XML-Lesen XML & JSON 2
M Problem mit FOP in Java Programm XML & JSON 2
S Problem mit XPath XML & JSON 4
J Problem mit compile einer XSD XML & JSON 3
N jdom problem beim lesen von child elementen XML & JSON 5
N problem bei xml lesen mit jdom XML & JSON 2
A XPath Problem XML & JSON 2
W JDOM element ändern funzt nich :( [problem gelöst] XML & JSON 3
G Problem mit XML-Schema Validierung mit Java XML & JSON 12
B jdom: getChildren() problem XML & JSON 4
H XSL-FO Problem mit If XML & JSON 2
loadbrain XPath Problem XML & JSON 2
T addContent / Problem mit Variable XML & JSON 2
F Problem mit JAXB Unmarshaller XML & JSON 2
F JDOM und XPath - Problem mit Namespace ohne Prefix XML & JSON 5
8 SAXParser Problem, startElement wird nicht ausgeführt XML & JSON 2
M Java und XSLT: Performanz-Problem XML & JSON 5
X JDOM SAXBuilder Validationschema - Problem XML & JSON 8
G Problem mit getContent XML & JSON 4
K stax problem XML & JSON 2
S Problem mit SAX XML & JSON 6
A Problem mit JasperReport XML & JSON 6
G DOCTYPE Problem beim Transformer/TransformerFactory etc. XML & JSON 13
C XSD Problem XML & JSON 16
R Problem bei Erstellung von XML(JDOM) XML & JSON 3
M XPath Problem im Zusammenhang mit document() XML & JSON 2
P Problem beim erstellen eines neuen Elements (JDOM) XML & JSON 5
Z Problem mit getNodeValue() und setNodeValue() in DOM XML & JSON 6
H JAXB CUSTOMIZATION PROBLEM XML & JSON 2
M XPATH und RSS (Problem namespaces) XML & JSON 7
P SAXParser problem? XML & JSON 2
S Problem beim Erstellen eines pdfs XML & JSON 3
V Problem mit xsd XML & JSON 2
P XML mit hilfe von JDOM abspeichern macht Problem XML & JSON 6
G Problem mit addContent() XML & JSON 4
B DTD Problem - Reihenfolge der Einträge XML & JSON 2
R Problem beim Auslesen von Attributen XML & JSON 4
K Problem mit ant/java web services XML & JSON 4
K xml Datei mit JDOM erzeugen, Problem Namespaces XML & JSON 1
P Problem mit XML und DOM XML & JSON 2
pkm Gibt es XML-Parser-Bibliotheken XML & JSON 3
B XML-Daten mit SAX Parser verarbeiten in Java XML & JSON 4
MiMa SAX-Parser beenden? XML & JSON 5
K GSON-Parser XML & JSON 6
K XML-Parser vs. XLST XML & JSON 4
L DOM Parser Implementieren XML & JSON 9
M SAX Parser implementieren XML & JSON 2
E Gibt es denn einen XML-Parser für JUnit-Tests? XML & JSON 6
D XSD Parser XML & JSON 1
T Neuer XML Parser!!! XML & JSON 33
J XML Parser anhand xsd erzeugen XML & JSON 2
H SAX Parser optimieren XML & JSON 5
H Sax Parser verschluckt teile XML & JSON 11
C XML SAX Parser XML & JSON 10
R Handler-Wechsel, SAX Parser bricht nach 8192 Byte ab XML & JSON 5
B SAX-Parser - Dokumente einlesen und in einer Map ablegen XML & JSON 2
S Sax Parser Performance XML & JSON 2
M Eigener XML-Parser XML & JSON 1
S Typsicherer HTML-Parser XML & JSON 5
S HTML Parser XML & JSON 2
B Parser und Fabrik XML & JSON 6
F SAX Parser siehe nichts auf dem Konsole weder eine Fehlermeldung noch eine Ergebnis XML & JSON 6
enne87 SAX-Parser XML & JSON 5
C Mit SAX Parser XML Attribute auswerten XML & JSON 3
H XML-Parser: geparste Strings in Konstruktor? XML & JSON 9
S DOM Parser XML & JSON 12
S Sax Parser XML & JSON 3
D Speicherüberlauf bei character-Methode mit SAX-Parser XML & JSON 3

Ähnliche Java Themen

Neue Themen


Oben