Html Text splitten, dabei Tag-Struktur nicht zerstören

R

Rushtone

Hallo Leute,
vorallem Hallo Thomas, ich schaue des öfteren mal hier vorbei und sehe dich immer sehr kompetent antworten, deshalb hab ich mir gedacht,
vielleicht kannst du mir ja helfen bei meinem Problem, natürlich dürfen mir die anderen Forenuser auch gerne helfen.. ;)

So zu meinem Problem:

So erst kurze Info um was es überhaupt geht:
Ich habe einen ChatBot für Age of Conan geschrieben. Nein keinen von den bösen Spambots für Chinafarmer, sondern einen der
im Gildenchannel Infos ausgibt über Online kommende Buddys, die den Bot auch direkt anschreiben können um Aktionen wie Eintragen in eine
Warteliste für anstehende Gildenevents oder sich eine liste mit online zeiten von den anderen usern anzuschauen, usw.

So in AgeOfConan (AoC) kann man anstelle von normalem Text auch html benutzen, was darin resultiert, das man einen
kleinen Link im Chatpannel im Spiel bekommt, wen man auf diesen Klickt erscheint ein verschiebares Fenster mit dem gesetzten Inhalt.

Da man aber nur 8000 Zeichen an den Chatserver schicken kann (sonst wird man vom Server gekickt!) muss ich meine Nachrichten splitten und
1 Chatfenster in mehrere aufteilen. Das habe ich bisher auch schon realisiert mit regular Expressions, allerdings gefällt mir das überhaupt nicht, da
man html ja bekanntermaßen sehr unsauber schreiben kann, bzw auch Verschachtelungen einbauen kann.
Klar wenn ich meine eigenen Klassen benutze die den html code erzeugen habe ich diese probleme nicht, da sich die Struktur nicht ändert.

Aber ich habe ein Announce Plugin geschrieben, das ich in naher zukunft so umbauen will, das man vom Spiel aus html code eingibt per hand und dann
auch entsprechend anzeigt. Nur hier ist dem user keine grenze gesetzt und im schlimmsten falle funktionierts nicht weil die Struktur nicht von meiner regexp richtig
ausgewertet wird.

Lange Rede gar kein Sinn:

Ich würde gerne das hier splitten, aber so das die tag Struktur erhalten bleibt:
Bsp1:
VON:
HTML:
<center><font face='HYBORIANLARGE' color=#ff0000>NORMALER TEXT UND GANZ VIEL TEXT<a href='chatcmd:///INVITE name'>link1</a></font><center>
ZU:
HTML:
<center><font face='HYBORIANLARGE' color=#ff0000>NORMALER TEXT UND GANZ VIEL TEXT<a href='chatcmd:///INVITE name'>link1</a></font><center>
<center><font face='HYBORIANLARGE' color=#ff0000><a href='chatcmd:///INVITE name'>link1</a></font><center>

----------------------------------------
So sieht ein mögliche Formatierung aus:
HTML:
<a href='chatcmd:///TELL cmd1'>link</a><center><font face='HYBORIANLARGE' color=#ff0000><a href='chatcmd:///INVITE name'>link1</a></font>normaler text
<a href="text://<center><font face='HYBORIANLARGE' color=#ffffff>Line1</font></center><br><font face='HYBORIANLARGE' color=#ffffff>Line2</font><br>
<font face='HYBORIANLARGE' color=#ffffff>Line3</font><br><font face='HYBORIANLARGE' color=#ffffff>Line4</font><br>">Fensterlink</a></center>

#####################
#     Line1                             #
#     Line2                             #
#     Line3                             #
#     Line4                             #
#####################

#####################
#     Line1                             #
#     Line2                             #
#                                            #
#                                            #
#####################

#####################
#     Line3                             #
#     Line4                             #
#                                            #
#                                            #
#####################

Wie würdet ihr an dieses Problem rangehen?

Ich habe mir mal HtmlParser von SourceForge geladen und dammit bissel rumgespielt, die Nodes sind auch an der richtigen Position, ich habe allerdings Probleme
die Tag Struktur wieder ordentlich zusammenzubauen:
So siehts im Debugger aus in der treeview der Nodes::
Java:
#<center>
         |--<font>
         |        |---text1
         |        |---text2
         |--</font>
</center>

Also eigentlich auch so wie es sein soll, stehe wohl einfach nur aufm schlauch. Aber vielleicht gibts nen einfacheren Weg?

//Fehler oben in dem beispiel korrigiert:

Bsp1:
VON:
HTML:
<center><font face='HYBORIANLARGE' color=#ff0000>NORMALER TEXT UND GANZ VIEL TEXT<a href='chatcmd:///INVITE name'>link1</a></font><center>
ZU:
HTML:
<center><font face='HYBORIANLARGE' color=#ff0000>NORMALER TEXT UND GANZ VIEL TEXT</font><center>
<center><font face='HYBORIANLARGE' color=#ff0000><a href='chatcmd:///INVITE name'>link1</a></font><center>
 
Zurück