[Java/SAX/XML] Entities in textnode te niet resolven

Pagina: 1
Acties:

  • ari3
  • Registratie: Augustus 2002
  • Niet online
Ik ben een parser aan het bouwen voor wat XML. Hiervoor gebruik ik een SAX-parser. Het probleem waar ik tegen aanloop is dat entiteiten worden vertaald op het moment dat ik dat niet wens. De vertaling kan ik wel mee leven, maar de parser ziet in dat geval 3 regels met characters. Het volgende voorbeeld illustreert mijn probleem.

Gegeven het volgende XML fragment:
XML:
1
2
3
<tekst>
   <regel>Jip &amp; Janneke</regel>
</tekst>

en gegeven de volgende implementatie van de characters method in org.xml.sax.ContentHandler:
Java:
1
2
3
4
public void characters(char[] ch, int start, int length) throws SAXException {
   String text = new String(ch, start, length);
   System.out.println("***TEXTNODE*** " + text);
}

wordt de volgende output geproduceerd:
Text output:
1
2
3
***TEXTNODE*** Jip 
***TEXTNODE*** &
***TEXTNODE***  Janneke


In de output is te zien dat drie textnodes worden gevonden. Hoe krijg ik de parser zover dat hij alles tussen de <regel> tags ziet als één regel tekst, zonder de context bij te houden in de characters method?

"Kill one man, and you are a murderer. Kill millions of men, and you are a conqueror. Kill them all, and you are a god." -- Jean Rostand


  • PommeFritz
  • Registratie: Augustus 2001
  • Laatst online: 10-07 04:13

PommeFritz

...geen friet

Je topic titel, het eerste deel en het tweede deel van je topic gaan over 3 verschillende dingen. Maar goed, je uiteindelijke vraag: het is niet mogelijk om af te dwingen dat alle text in je text node in 1 keer opgelepeld wordt. Een SAX parser mag namelijk volgens de spec de text in verschillende chunks aanleveren. Je zult dus d.m.v. de start en length parameters de substring uit de character array moeten halen en deze zelf steeds ergens achter plakken.

FireFox - neem het web in eigen hand


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 12-08 20:57

Macros

I'm watching...

Ik had hetzelfde probleem met een XML parser voor game server data. Ik heb uiteindelijk gewoon zelf de data aan elkaar geplakt.

"Beauty is the ultimate defence against complexity." David Gelernter