# HTML-Befehle per Java entfernen



## Chatrick (25. Jul 2006)

Moin Leute für euch bestimmt ne einfache aufgabe! Ich will eine HTML datei die ich in einem String habe von allen HTML befehlen befreien! Wwelche möglichkeiten gibt es da? Habe unter Swing einen HTML parser gefunden steige bei diesem aber nicht durch! Vielen Dank
Chatrick


----------



## AlArenal (25. Jul 2006)

Willst du nur die Tags entfernen oder auch deren Inhalt? Und was hat es mit dem erwähnten String auf sich?


----------



## Chatrick (25. Jul 2006)

Naja bin jetzt nicht so der html experte aber meine es so:
Folgenden HTML Text habe ich in einem String

<FONT COLOR="#FF0000" > 1.Röber, Robin                95 LG Reinbek Ohe                 3:37,9  min</FONT>

Nach bearbeitung soll nur noch der reine Text da sein. Also:

 1.Röber, Robin                95 LG Reinbek Ohe                 3:37,9  min


----------



## foobar (25. Jul 2006)

Das ist doch simpel:


```
String s ="<FONT COLOR=\"#FF0000\" > 1.Röber, Robin 95 LG Reinbek Ohe 3:37,9 min</FONT>";
         s = s.replaceAll("</?[^>]+>",""); 
         System.out.println(s);
```


----------



## chatrick (25. Jul 2006)

Klasse super funktioniert! Da ich gerne immer alles wisse und auch noch ein sehr jungfreulicher Informatik Student bin, kann ich den Ausdruck nicht deuten! Klar reguläre Ausdrücke aber könntest du mir den mal in Worten übersetzen?


----------



## Lim_Dul (26. Jul 2006)

```
s.replaceAll("</?[^>]+>","");
```

Ich nehm den mal auseinander:


```
<
```
Als erstes Zeichen muss eine öffnende, spitze Klammer kommen. Die ist ja auch der Anfang von allen HTML Tag


```
/?
```
Danach darf, muss aber kein / kommen. Das Fragezeichen bedeuted, darf einmal oder keinmal vorkommen. 


```
[^>]
```
In Eckigen Klammern stehen Zeichenklassen. Das ^ steht dabei für eine Negation. [^>] trifft also auf alle Zeichen, außer der schließenden Klammer zu. Allerdings nur auf genau ein Zeichen


```
[^>]+
```
Das Plus dahinter bedeuted, dass, was vor dem Plus steht, darf beliebig oft wiederholt werden, muss aber mindestens einmal vorkommen. Damit trifft dieser Teilausdruck einen beliebig langen Teilstring, wo keine schließende spitze Klammer vorkommt.


```
>
```
Am Ende muss eine schließende spitze Klammer kommen.

Dieser ganze String soll dann durch den Leeren String, "", ersetzt werden.

Jetzt verständlich?


----------



## noobster (26. Jul 2006)

entschuldige wenn ich hier eine frage in einem fremden eitrag stelle aber nur mal rein interessehalber...

was wäre bei einem xml dokument oder einem php oder js in das ein xml dokument mittels string eingebettet ist welcher eine CDATA sektion besitzt die dann ja auch oben genannte zeichen als nicht html entity sondern als genau dieses zeichen enthalten können welche dann auch ersetzt würden?

Gruss Sascha


----------



## foobar (26. Jul 2006)

Ja, Xml-Tags würden auch entfernt werden.


----------

