[SAX] Geschachtelte XML Datei parsen

la-finest

Mitglied
Hallo zusammen,

habe folgendes XML (Snippet):
Java:
<item>
...
<subtitle hit="1">
Fakten für 
<hit>Python</hit>
-Entwickler
<hit>Python</hit>
text.text.text...
</subtitle>
...
</item>

Mit meinem SAXHandler:
Java:
@Override
	public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {
		currentElement = true;
		
		if(localName.equals("item")){
			pojo = new Pojo();
		}
	}

@Override
	public void endElement(String uri, String localName, String qName)
			throws SAXException {
		
		currentElement = false;
		
		if(localName.equalsIgnoreCase("subtitle")){
			pojo.setSubtitle(currentValue);
		}
}

@Override
	public void characters(char[] ch, int start, int length)
			throws SAXException {	
		
		if (currentElement) {
			currentValue = new String(ch, start, length);
			currentElement = false;
		}
	}

Ohne das <hit>-Tag schreibt er mir alles raus. Mit dem Tag wird nur noch "Python", also der Wert innerhalb des <hit>-Tags ausgegeben. Wie komme ich an den kompletten Text ran, also "Fakten für Python-Entwickler Python text.text.text...".
Habe nur Beispiele im Netz gesehen von <tag><subtag></subtag></tag> und nicht mit Text vorm Tag.

Viele Grüße & Dank,
la-finest
 
Musst mal schauen, ob es beim SAX-Parser bei so genannten Mixed-Nodes (also Tags mit Subtags und Text-Node) was besonderes zu beachten gibt. Spontan wüsste ich nicht, aber normal mache ich nichts mit Mixed-Nodes.

Edit:
Hab noch etwas geschaut: Tip: SAX and document order -- deliver maximally contiguous text

Edit2:
Die Methode characters kann mehrfach aufgerufen werden, du überschreibst damit immer deinen alten Textwert.
 
Zuletzt bearbeitet:
Vielen Dank.

Bin von diesem MixedNote geraffelt nicht sonderlich begeistert, aber habe keinen Einfluss auf den Return des WebServices.

Werde dann mal das ganze ausprobieren.

Gruß,
la-finest
 

Zurück
Oben