Hallo,
ich möchte mit einem StAX-Parser (sehr ähnlich zu SAX, nur halt als Stream) die Offsets der XML-Elemente im Dokument berechnen. Im Moment nutze ich die
-Methode, um an die Offsets der Elemente zu kommen. Allerdings zeigen die immer auf das Ende des Elements bzw. StAX-Ereignisses.
Beispiel:
* = Character-Pointer für Ereignisse
Wenn ich jetzt zum Beispiel <node> ausschneiden möchte, würde ich den 2. und 4. Eventoffset nehmen. Aber leider stimmen die Werte nicht ganz, denn ich erhalte dann nicht "Text bla bla bla</node>" sondern irgendwas ähnliches wie "xt bla bla bla</node></bs"
Die Offsets sind total verschoben und ich jetzt auch nicht mehr, auf was sich das bezieht.
/// EDIT
noch ein Beispiel mit Verschachtelung
<bsp>*
<node>* <-- 2. Offset
Text bla bla bla*
</node>* <-- 4. Offset
<node>* <-- 5. Offset
<internalNode>* <-- 6. Offset
blub*
</internalNode>* <-- 8. Offset
</node>*
</bsp>*
Da StAX eine Unterscheidung zwichen öffnenden Tags und schließenden Tags macht, muss überprüft werden, was der letzte Offset war. Weil wenn ich davon ausgehe, dass das schließende Tag der Beginn eines neuen öffnenden Tags ist, funktioniert die Berechnung für das Beispiel oben nicht mehr, weil <internalNode> direkt auf <node> folgt, ohne dass <node> geschlossen wird.
/// END OF EDIT
Wie berechne ich die Offsets, damit ich "<node>Text bla bla bla</node>" erhalte?