Auf der Suche nach einem HTML / CSS Parser

Prophet05

Erfahrenes Mitglied
Moin,

ich habe mich mal nach einem XML / HTML / CSS Parser umgeschaut. Einen XML Parser gibt es ja bereits in der Standard Bibliothek. Bei der Suche nach HTML Parsern bin ich über allerlei gestolpert und meine Suche nach einem CSS Parser ist fast gescheitert.

Nun wollte ich euch mal Fragen ob ihr gute HTML & CSS Parser kennt? HTML Parser gibt es ja viele aber wie viele unterstützen den DOM standard des W3C oder können vielleicht sogar das HTML Rendern das sie Parsen. Mir ist es schon oft unter gekommen das die Parser komplett ihre eigenen Interfaces mitgeliefert haben obwohl die Standard Bibliothek ja bereits ein DOM Kompatibles set interfaces liefert.

Beim CSS Parser habe ich zufällig entdeckt das das Packet org.w3c.dom.css Exsistiert, allerdings ohne in der Dokumentation aufzutauchen oder einen Parser mitzuliefern. Ausserdem bietet das W3C nochmal zusätzlich eine Schittstelle "SAC" an, aber wieder ohne Parser. Und dann habe ich auch noch das dieses Projekt gefunden, welches zwar ein DOM und ein SAC interface bietet aber scheinbar noch im Beta stadium befindlich ist.

Welche Parser könnt ihr mir empfehlen? Kennt ihr vielleicht sogar Projekte die HTML und CSS rendern können und einfach in eine Java-Anwendung zu integrieren sind?

Ich habe mir auch mal Mozilla angeschaut, aber dort finde ich weder anfang noch ende, geschweige den ein gescheites Java-Binding...

Gruß, Prophet05
 
Zuletzt bearbeitet:
Zuletzt bearbeitet:
Probiere gerade mit jxcss rum - werde aber absolut nicht schlau draus...

Glaube ich verstehe grundsätzlich die Parser falsch.
Ich bekomme keine 3 Zeilen auf die Reihe!

Batik 1.7 Steady State 0.9.5 und Flute 1.3 hatte ich auch schon - aber ich kann damit einfach nichts anfangen - glaube ich bin wirklich zu doof dafür! Kann mir jemand einen Ansatz nennen was ich machen muss? Bzw was für Schritte?

Muss ich mir eine Klasse schreiben die ein ganz bestimmtes Interface implementiert?
Ich möchte einfach nur ein bestehendes CSS-File parsen und alle Elemente auflisten - das reicht mir schon... Ich bin wirklich zu doof glaube ich...

lg
 
Also bei jxcss steht doch sogar ein Beispiel auf der Hauptseite:
https://jxcss.dev.java.net/

Beim HTML Parser von Swing wäre ich mir aufgrund des Alters unsicher inwiefern man den Heute noch an komplexere Seiten ran lassen darf.

Ansonsten nochmal danke für den Link auf die Java-Source Seite. Gibt es zu der dort präsentierten Auswahl noch Erfahrungswerte oder Empfehlungen?

Gruß, Prophet05
 
Also bei jxcss steht doch sogar ein Beispiel auf der Hauptseite:
https://jxcss.dev.java.net/

Das stimmt wohl - aber das geht so nicht weil man den Kommentar durch Quelltext ersetzen sollte:
Code:
// Initialize the parser factory and the content handler

Nur genau da weiß ich nicht wie man an 2 Instanzen kommen soll!
Keine Ahnung...

Ich hab schon viel probiert - wenn ich zu Haus bin kann ich ja mal meinen aktuellen Stand posten. Gestern abend hatte ich einfach keine Lust mehr da weiter zu machen! Aber wenn jetzt schon jemand weiß wie das geht: Her damit! ;)

Bis später

lg
 
Klein0r hat gesagt.:
Nur genau da weiß ich nicht wie man an 2 Instanzen kommen soll!
Keine Ahnung...
Ohne mich jetzt genauer damit beschäftigt zu haben würde ich behaupten das du diese Instanzen bei dem von dir gewählten Parser holen musst. Da muss es irgendwo eine Klasse geben die die entsprechenden Interfaces implementiert oder eine Factory die dir Entsprechendes rauswirft.

Spechter hat gesagt.:
Wenn du HTML/CSS rendern möchtest dann würde ich dir https://xhtmlrenderer.dev.java.net/index.html empfehlen. Das benütze ich um z.B. aus HTML-Seiten eine PDF-Datei zu erstellen
Danke den kannte ich noch nicht!
 
Ohne mich jetzt genauer damit beschäftigt zu haben würde ich behaupten das du diese Instanzen bei dem von dir gewählten Parser holen musst. Da muss es irgendwo eine Klasse geben die die entsprechenden Interfaces implementiert oder eine Factory die dir Entsprechendes rauswirft.

Ja es gibt sowas wie newParser oder makeParser. Bin mir gerade nichtmehr so sicher. Werde mich da erst am Wochenende wieder mit auseinander setzen können. Also morgen oder übermorgen!

Dann werde ich da hoffentlich schlau draus.
Ich hab mir mit den XML-Parsern ja auch schon einen abgebrochen... Aber das ist so lange her das ich den Ansatz da nichtmehr kenne und die sources auch nicht finde - doof gelaufen! Aber da war es nen ähnliches hin und her...
Muss mal meine Unterlagen durchwühlen.

lg
 
So folgendes.

So weit bin ich gekommen:
Java:
import java.io.IOException;

import jxcss.SAXCSSDocumentHandler;

import org.w3c.css.sac.CSSException;
import org.w3c.css.sac.InputSource;
import org.w3c.css.sac.Parser;
import org.w3c.css.sac.helpers.ParserFactory;
import org.xml.sax.ContentHandler;

public class ParserMain {

	public static void main(String[] args) {

		ParserFactory parserFactory = new ParserFactory();
		Parser parser  = null;
		ContentHandler contentHandler = null;
		SAXCSSDocumentHandler documentHandler = null;
		
		try {
			
			parser = parserFactory.makeParser();
			
			//documentHandler = new SAXCSSDocumentHandler(contentHandler);
			parser.setDocumentHandler(documentHandler);
			
			parser.parseStyleSheet(new InputSource("stylesheet.css"));
			
		} catch (CSSException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (NullPointerException e) {
			e.printStackTrace();
		} catch (ClassCastException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InstantiationException e) {
			e.printStackTrace();
		}

	}
}

Verstehe das nich so ganz warum ich ne NullPointerException bekomme...
Gibt doch von allem Instanzen.
Code:
java.lang.NullPointerException: No value for sac.parser property
	at org.w3c.css.sac.helpers.ParserFactory.makeParser(ParserFactory.java:35)
	at stillinuse.ParserMain.main(ParserMain.java:24)

Zeile 24 ist:
Java:
parser = parserFactory.makeParser();

Weiß jemand Rat?
 
Zurück