Tags "parsen"

XPrototypeX

Aktives Mitglied
Soo wollen wir mal anfange. Ich erstmal kein Quellcode posten, sondern das eher in der Theorie diskutieren.

Ich hab einen String. Dieser beinhaltet Schlüsselwörter zwischen Tags. (z-B <Text>Hallo Leute </Text>) Bei manchen Tags stehen jedoch auch die benötigten Informationen in den Tags.

Wie würdet ihr daran gehen?

Ich habe mir zwei verschiedene Optionen überlegt.

Eine Methode schreiben die per indexOf den Tag sucht, dann das ände sucht. Dann einen Substring aus den beiden Werten bildet (Den Tag an sich raus rechnen).
Das wäre denke ich etwas perfomanter als meine 2. variante.
Ausgabe: Hallo Leute

Die 2. Methoden arbeitet auch mit indexOf. Nun wird jedoch der komplette Tag in eine ArrayList geschrieben. Am ende stelle ich Methoden bereit, die nach Tags in der Liste suchen und diesen vollständig zurück liefert order nur den Text.
Also Ausgabe: <Text>Hallo Leute </Text> bzw. Hallo Leute

Die Frage die ich mir stelle, geht es noch anderes bzw. schneller als mit indexOf?
 

darekkay

Bekanntes Mitglied
Ich empfehle eine HTML/XML Parser Bibliothek - JSoup finde ich bisher ab besten/einfachsten.
Könnte eventuell ein Overkill sein, wenn die Aufgabe so einfach bleibt, aber schaden kann es ja nicht .
 

Bleiglanz

Gesperrter Benutzer
Wenn du was lernen willst, würde ich eine Zustandsmaschine verwenden - ansonsten natürlich eine Bibliothek

du verwandelst einen String in ein char-Array

dann läufst du entlang

Wenn ein "<" kommt: push...Eine Etage höher

Wenn ein ">" kommt: pop...Eine Etage tiefer

Wenn ein = kommt, schauen was vorher war, und warten auf " ...

und so weiter. Gymnasik mit indexOf und ähnlichen Konstukten wird schnell ein undurchdringliches Gestrüpp, vor allem wenn die Tags ineinander geschachtelt sind
 

XPrototypeX

Aktives Mitglied
Naja, es gibt mir eigentlich nicht um den "sauberen" weg sondern eher um die Geschwindigkeit.
Klar könnte ich da jetzt irgendein HTML Parser nehmen. Aber der ist dann nicht so ausgelegt wie ich das gerne hätte.
Ich brauche wirklich nur das was zwischen den Tags steht und einmal eine Sache die in den Tags steht.
Die 2 oben beschriebenen Methoden habe ich auch schon. Nun wollte ich halt wissen, ob es noch anderes geht ohne indexOf und ob dies vielleicht sogar perfomanter ist.
 

Marco13

Top Contributor
Es geht wohl um www.java-forum.org/xml-co/145453-neuer-xml-parser.html .

"DIE BESTE" Lösung weiß ich nicht, vermutlich gibt es sie auch (mal wieder) nicht, aber es gibt viele freie XML-Parser, bei denen man sich ggf. Inspiration holen kann. Da sieht man dann auch, dass es sehr SEHR SEHR kompliziert sein kann, wenn man Escape- Sonder- und Anführungszeichen richtig Erkennen und im Rahmen der <>-Suppe behandeln will (und dass man das nicht mal eben in 2, 3 Stunden runterschreibt ;) )
 

Momolin

Aktives Mitglied
Hallo,

was spricht gegen reguläre Ausdrücke. Mit dem folgendem Programm (stand-alone oder als eclipse plugin) kann man die auch hervorragend testen: QuickREx

Grüße
 

Ark

Top Contributor
Ne geht eigentlich mehr um HTML's und da auch nur wie gesagt um wenige Tags.
Ob wenig oder viel, spielt da eher eine untergeordnete Rolle. Viel wichtiger ist die Frage, ob dein Parser korrekt arbeitet. Ich habe es hier schon mal angedeutet:

Dein Programm sollte wie dein Körper sein. Wichtige Abwehr- bzw. Entgiftungsorgane u.Ä. sind dort redundant angelegt (z.B. Nieren), großflächig ausgebaut (Haut, Lymphsystem/-knoten) oder erholen sich auf schon fast magisch anmutende Weise (Leber). Praktisch alle Organe, die direkt mit der Umwelt in Kontakt kommen, haben erstaunliche Schutzmechanismen ausgebildet (z.B. die Augen mit Lidern, Brauen, Wimpern, Hornhaut etc.) oder sind quasi selbst Schutzorgane (z.B. die Haut mit Säureschutzmantel und einem gigantischen Netz an Sensoren). Das Ziel ist immer das gleiche: Alles, was von Außen kommt, ist potentiell gefährlich und sollte am besten gar nicht erst in den Körper gelangen, und wenn doch, möglichst schnell und unkompliziert ausgeschieden werden (notfalls z.B. durch Kotzen, es sei denn, man ist ein Pferd).

Und genauso sollte dein Programm misstrauisch gegenüber jeder Art von Eingaben sein und im Zweifelsfall lieber kontrolliert abstürzen als Mist bauen.

Was die Performance angeht, kannst du übrigens beruhigt sein: Die meisten Programmier- und Auszeichnungssprachen sind so konstruiert, dass mit etwas Glück (schnelles Nachschlagen bei kontextuellen Abhängigkeiten vorausgesetzt) die gesamte Eingabe praktisch in einem Rutsch erfasst werden kann. Das gilt auch für HTML (glaube ich).

was spricht gegen reguläre Ausdrücke.
HTML ist keine reguläre Sprache, folglich wäre ein HTML-Parser, der nur mit regulären Ausdrücken arbeitet, "widersprüchlich" (d.h., er akzeptiert Eingaben, die kein HTML sind) oder "unvollständig" (d.h., gültiges HTML wird von ihm nicht akzeptiert).

Ark
 

Marco13

Top Contributor
Abgesehen davon wäre auch gut zu wissen, um welches HTML es geht. Um gültiges? Oder auch um Ungültiges? Die Frage ist nicht so ironisch gemeint, wie sie klingt: Ich vermute, dass die ALLERmeisten Webseiten in irgendeiner Form ungültiges HTML enthalten. Ungültige Tags, Fehlende Schließende Tags, oder schlicht falsch gematchte Tags. Wenn es um's lesen geht, habe ich mit Jericho HTML Parser gute Erfahrungen gemacht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H jid3lib nach schreiben keine Tags im Folder angezeigt Allgemeine Java-Themen 1
V Javadoc-Tags Allgemeine Java-Themen 2
B HTML Tags in Strings umwandeln Allgemeine Java-Themen 4
C Attribute aus HTML Tags auslesen Allgemeine Java-Themen 6
DEvent Wieso ist Javadoc mit Html Tags? Allgemeine Java-Themen 47
D id3-tags mit jid3lib Allgemeine Java-Themen 2
E Html tags entfernen optimieren Allgemeine Java-Themen 12
faetzminator Regex zur Suche von "value-losen" Attributen in HTML Tags Allgemeine Java-Themen 7
I Wie kann ich mehrere Mp3 Tags ausgeben? Allgemeine Java-Themen 6
cover1012 Umlaute in id3 Tags Allgemeine Java-Themen 2
P MP3-Player Library: MP3 abspielen und ID-Tags auslesen Allgemeine Java-Themen 12
G MP3 tags auslesen Allgemeine Java-Themen 2
W Zugriff auf HTML - Tags über Applets Allgemeine Java-Themen 2
S ID3-tags auslesen? Allgemeine Java-Themen 3
F buttons mit tags oderso? Allgemeine Java-Themen 6
C HTML Text ohne Tags drucken Allgemeine Java-Themen 4
K Inhalte Parsen von Website Allgemeine Java-Themen 15
W JSON parsen eines ,mit JS.stringify erstellten Strings Allgemeine Java-Themen 27
C Parsen einer sich updatenden Html mithilfe von jsoup Allgemeine Java-Themen 4
O JSON in Integer parsen Allgemeine Java-Themen 5
S Ini Text aus String parsen Allgemeine Java-Themen 1
OnDemand Datenbankdatei parsen Allgemeine Java-Themen 2
N svg(xml) parsen und manipulieren? Allgemeine Java-Themen 3
OnDemand CSV parsen mehrere Zeilen Allgemeine Java-Themen 22
2 mehrere Json Werte Parsen Allgemeine Java-Themen 3
G JSON parsen Allgemeine Java-Themen 3
W String Parsen und auf eigenes Muster anwenden (kein Regex) Allgemeine Java-Themen 11
looparda Datei parsen Allgemeine Java-Themen 1
T Jsoup: Mehrere Links nacheinander parsen Allgemeine Java-Themen 11
C Benutzereingabe von EXCEL-Funktionen parsen Allgemeine Java-Themen 4
B Such-String parsen mit Klammern Allgemeine Java-Themen 2
L Windows CMD werte Parsen. Allgemeine Java-Themen 2
B XML parsen Allgemeine Java-Themen 13
H Bestimmten Wert aus String parsen Allgemeine Java-Themen 7
0 Parsen Allgemeine Java-Themen 7
W Best Practice Dateien parsen Allgemeine Java-Themen 3
A Parsen mit java_cup - Shift/Reduce Problem Allgemeine Java-Themen 12
C Roboter, Befehle parsen Allgemeine Java-Themen 12
M Informationen aus komplexen String parsen Allgemeine Java-Themen 13
W Dateinamen dynamisch Parsen Allgemeine Java-Themen 12
F JavaMail - Lokale eMail-Datei einlesen und parsen? Allgemeine Java-Themen 9
T String in Date parsen (*ohne* bekanntes Format) Allgemeine Java-Themen 8
M Dateien mit Quelltext parsen Allgemeine Java-Themen 7
W RegEx Zeile parsen Medium Allgemeine Java-Themen 8
S Dateiname mit Regex parsen Allgemeine Java-Themen 3
K _alle_ Sonderzeichen parsen Allgemeine Java-Themen 2
S Feher beim Parsen eines Datums Allgemeine Java-Themen 4
E Reguläre Txt in Tree parsen Allgemeine Java-Themen 2
S Strings zu Color-Instanzen parsen? Allgemeine Java-Themen 7
S Überprüfung/Parsen eines Byte-Arrays Allgemeine Java-Themen 9
martin82 Java-Code aus Text-Datei parsen Allgemeine Java-Themen 3
A String zu Datum parsen - SimpleDateFormat Problem Allgemeine Java-Themen 8
A Datum parsen Allgemeine Java-Themen 9
G Parsen von: if(a > 15 AND (b == 3 OR c != 4)) Allgemeine Java-Themen 3
G String nach Float parsen Allgemeine Java-Themen 2
P OutOfMemoryError beim XML erstellen bzw parsen, mehr RAM? Allgemeine Java-Themen 4
H2SO3- Exception beim date parsen des Jahres 00 Allgemeine Java-Themen 6
H2SO3- date mit pm and am parsen Allgemeine Java-Themen 3
Z Datum ohne Format-Kenntnisse parsen Allgemeine Java-Themen 5
T Wie kontinuierlichen asci input parsen? Allgemeine Java-Themen 3
C Java Quellcode parsen Allgemeine Java-Themen 8
alexpetri Date Parsen Allgemeine Java-Themen 3
G String parsen und Problem mit escaped zeichen Allgemeine Java-Themen 4
M Html parsen Allgemeine Java-Themen 2
D Parameter parsen? Allgemeine Java-Themen 15
V Datum parsen Allgemeine Java-Themen 6
MQue String parsen Allgemeine Java-Themen 11
M wie sinnvoll parsen ? Allgemeine Java-Themen 4
M Link parsen bzw. zerlegen Allgemeine Java-Themen 9
padde479 String in double parsen Allgemeine Java-Themen 6
W Package via Reflection parsen Allgemeine Java-Themen 4
M MP3 Datei selber parsen/werte auslesen Allgemeine Java-Themen 13
J parsen von verschiedenen dokument typen Allgemeine Java-Themen 3
B textzeile parsen Allgemeine Java-Themen 6
T Schlüsseldatei mit Umlauten parsen, aber wie. Allgemeine Java-Themen 6
G mail body parsen (->attachment & filename) Allgemeine Java-Themen 2
J DirectPlay Server-Antwort parsen Allgemeine Java-Themen 2
S String parsen Allgemeine Java-Themen 15
V LogFile parsen Allgemeine Java-Themen 5
E Field-Objekt in JTextField parsen Allgemeine Java-Themen 3
L Prozesse parsen ? Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben