![]() |
|
| #1 (permalink) | |
|
Inkognito
Beiträge: n/a
|
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> 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> Was mache ich falsch? Gruss Remo |
| #3 (permalink) | |
|
Inkognito
Beiträge: n/a
|
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
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 |
| #5 (permalink) | |
|
Stammbenutzer
Floppy Disc
Registriert seit: 29.08.2005
Beiträge: 801
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
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));
}
Mag1c |
|
|
| #6 (permalink) | |
|
Inkognito
Beiträge: n/a
|
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.... |
| #7 (permalink) | |
|
Stammbenutzer
Floppy Disc
Registriert seit: 29.08.2005
Beiträge: 801
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
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 |
|
|
|
| Lesezeichen |
Latex Maths & Physics Editor ...
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Characters in int[] Array einlesen und wieder ausgeben | flosi | Java Basics - Anfänger-Themen | 5 | 19.05.2007 14:53 |
| XML Parser Problem | Grammi | XML und Co. | 0 | 17.12.2006 21:47 |
| SAX - characters() | Fraiser | XML und Co. | 3 | 25.08.2006 12:49 |
| Noch ein Parser Problem | J-O-E | Java Basics - Anfänger-Themen | 7 | 06.04.2006 20:14 |
| Problem beim Parsen mit swinghtml parser, handle text,. | geckoo | AWT, Swing & SWT | 0 | 16.05.2005 20:48 |