Hallo,
vorweg: ja, ich habe bereits gesehen, dass es zu diesem Thema tausende Diskussionen im Forum und im Netz gibt; trotzdem kann ich mein Problem nicht lösen.
Ich lese eine JAVA-Datei so ein:
meine xml sieht derzeit so aus:
ich bekomme also das folgende Ergebnis:
jetzt stört es mich aber, dass die Leerzeichen / Tabs / Newlines nach jedem Element als Characters interpretiert
werden.
Klar könnte ich ein
schreiben; ich hätte diesen Vorgang allerdings gerne schon beim Einlesen der XML abgefangen.
In folgendem Post http://www.java-forum.org/de/viewtopic.php?t=58621&highlight=whitespace schreibt 20mithrandir:
nur dummerweise ändert das ganze nichts daran, dass ich noch immer meine blöden Characters zwischen den Elementen habe. Was kann ich da tun?!
danke, guni
vorweg: ja, ich habe bereits gesehen, dass es zu diesem Thema tausende Diskussionen im Forum und im Netz gibt; trotzdem kann ich mein Problem nicht lösen.
Ich lese eine JAVA-Datei so ein:
Code:
InputStream in = new FileInputStream( filename );
XMLInputFactory fctry = XMLInputFactory.newInstance();
XMLStreamReader p = fctry.createXMLStreamReader( in );
while (p.hasNext()){
System.out.println(h.get(p.getEventType())+":\t"+p.getLocalName());
p.next();
}
Code:
<?xml version="1.0" encoding="UTF-8"?>
<lesalaire>
<database>
<productsxml>../stage/products.xml</productsxml>
<homedrive>C</homedrive>
<homename>OraDB10gR2</homename>
</database>
<oas>
<productsxml>../stage/products.xml</productsxml>
</oas>
</lesalaire>
Code:
START_DOCUMENT: null
START_ELEMENT: lesalaire
CHARACTERS: null
START_ELEMENT: database
CHARACTERS: null
START_ELEMENT: productsxml
CHARACTERS: null
END_ELEMENT: productsxml
CHARACTERS: null
START_ELEMENT: homedrive
CHARACTERS: null
END_ELEMENT: homedrive
CHARACTERS: null
START_ELEMENT: homename
CHARACTERS: null
END_ELEMENT: homename
CHARACTERS: null
END_ELEMENT: database
CHARACTERS: null
START_ELEMENT: oas
CHARACTERS: null
START_ELEMENT: productsxml
CHARACTERS: null
END_ELEMENT: productsxml
CHARACTERS: null
END_ELEMENT: oas
CHARACTERS: null
END_ELEMENT: lesalaire
werden.
Klar könnte ich ein
Code:
if (p.getEventType() == XMLStreamConstants.CHARACTERS) {
if (p.isWhiteSpace()) continue;
}
In folgendem Post http://www.java-forum.org/de/viewtopic.php?t=58621&highlight=whitespace schreibt 20mithrandir:
das habe ich probiert. Habe mal eine ganz strenge DTD geschrieben:Du musst zwingend eine DTD verwenden, wenn du Whitespaces ignorieren willst, weil der Parser sonst nicht weiß, was er ignorieren darf und was nicht. So steht's in der API Doku jedenfalls.
Code:
<!ELEMENT lesalaire (database,oas)>
<!ELEMENT database (productsxml,homedrive,homename)>
<!ELEMENT productsxml (#PCDATA)>
<!ELEMENT homedrive (#PCDATA)>
<!ELEMENT homename (#PCDATA)>
<!ELEMENT oas ANY >
danke, guni