HTML Quellcode verarbeiten

Status
Nicht offen für weitere Antworten.

Markus_

Mitglied
Hallo,

eigentlich weniger ein Java als mehr ein Problem mit XSLT Transformern, aber ich versuch es mal:

Ich möchte ein html Dokument mit XSLT verarbeiten (Benutze dafür Xalan). Leider ist das HTML Dokument syntaktisch nur fast ein XML, und zwar möchte ich, dass beim Parsen des Dokumentes Kommentare und <script> Tags (samt Inhalt) einfach ignoriert werden.
Also suche ich irgendwelche Parameter etc., die ich meinem Tranformer mitgeben könnte, hat da irgendjemand eine Idee oder schon mal was gehört?

Besten Dank
Markus_
 
Kann rein theoretisch auch ein beliebiger XML Parser sein, zum Beispiel ein STAX Parser wo man im Handler angeben kann, dass bei Element x einfach ans Ende von x gegangen werden soll.
 
Leider ist das HTML Dokument syntaktisch nur fast ein XML ...

Ist das Dokument nach XHTML Standard validierbar ist es XML von vorne bis hinten. Leider ist das nur bei den meisten Webseiten nicht der Fall, weil dank Browser-Kompatibilitäten (oder waren es Inkompatibilitäten) massig Hacks einfließen.

Was du versuchen kannst ist den HTML Baum aufzusplitten und das Ganze als einen sauberen XML Baum zu speichern. Im Anschluss eben XSLT Transformations rüber schicken.
 
Das Problem an der Seite ist JavaScript bzw genauer Tags wie:
HTML:
<script ...>
...
document.write('<scr'+' ... ></scr>');
</script>
D.h. <'scr'+ usw. ist ungültiges XML. Ich hoffte, dass vlt. jemand einen SAX/StAX Parser kennt, den (über Erweiterungen etc) so verändern kann, dass er beim Parsen bestimmte Tags einfach überspringt.

Letztendlich brauche ich das Dokument jedoch nur einmal zu scannen, daher lohnt es nicht, das Dokument vorzuverarbeiten. Nun, da muss ich wohl meinen eigenen Scanner schreiben der genau das tut, was ich will (hätte mir halt gewünscht, irgendwas wiederverwerten zu können ^^)
 
Wie wäre es per RegExp die Script-Tags zu entfernen.

Das Dokument als String einlesen. xmlString

String.replaceAll(String regex, String replacement)

String bereinigterXmlString = xmlString.replaceAll("<script.*</script>","");

Als kleine Anregung
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben