# HTML Quellcode verarbeiten



## Markus_ (17. Aug 2009)

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_


----------



## Markus_ (17. Aug 2009)

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.


----------



## Noctarius (17. Aug 2009)

Markus_ hat gesagt.:


> 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.


----------



## Markus_ (18. Aug 2009)

Das Problem an der Seite ist JavaScript bzw genauer Tags wie:

```
<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 ^^)


----------



## JohannisderKaeufer (21. Aug 2009)

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


----------

