Auf der Suche nach einem HTML / CSS Parser

So irgendwie bekomme ich keinen SAC-Parser hin.
Wenn ich das habe dann gehts glaube ich gut vorran.

Ich habe mal den Sourcecode zur vorher genannten Exception gesucht:
Java:
/*
 * Copyright (c) 1999 World Wide Web Consortium,
 * (Massachusetts Institute of Technology, Institut National de
 * Recherche en Informatique et en Automatique, Keio University). All
 * Rights Reserved. This program is distributed under the W3C's Software
 * Intellectual Property License. This program is distributed in the
 * hope that it will be useful, but WITHOUT ANY WARRANTY; without even
 * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 * PURPOSE.
 * See W3C License http://www.w3.org/Consortium/Legal/ for more details.
 *
 * $Id: ParserFactory.java,v 1.1 2000/02/14 15:54:49 plehegar Exp $
 */
package org.w3c.css.sac.helpers;

import org.w3c.css.sac.Parser;

/**
 * @version $Revision: 1.1 $
 * @author  Philippe Le Hegaret
 */
public class ParserFactory {
    
    /**
     * Create a parser with given selectors factory and conditions factory.
     */    
    public Parser makeParser()
	throws ClassNotFoundException,
	       IllegalAccessException, 
	       InstantiationException,
 	       NullPointerException,
	       ClassCastException {
	String className = System.getProperty("org.w3c.css.sac.parser");
	if (className == null) {
	    throw new NullPointerException("No value for sac.parser property");
	} else {
	    return (Parser)(Class.forName(className).newInstance());
	}
    }
}

Nur was bitte macht System.getProperty("org.w3c.css.sac.parser"); ?
Was wird da geladen und wie kann ich so an ein Ergebnis kommen?

Ich raffs nich :)

danke

EDIT:
So ich habe es endlich hinbekommen - war eigentlich sehr einfach. Allerdings ohne diese jxcss-Geschichte:

  1. Batik laden: http://xmlgraphics.apache.org/batik/
  2. SAC laden: http://www.w3.org/Style/CSS/SAC/
  3. folgende Libs einbinden:
    • sac.jar
    • batik-css.jar
    • batik-util.jar

Nun funktioniert das ganze folgendermaßen:
Java:
import java.io.FileReader;
import java.io.IOException;

import org.apache.batik.css.parser.Parser;
import org.w3c.css.sac.CSSException;
import org.w3c.css.sac.InputSource;

public class ParserMain {

	public static void main(String[] args) {
		
		Parser p = null;
		FileReader cssReader = null;
		MyCssDocumentHandler cssDocHandle = new MyCssDocumentHandler();
		
		try {
			p = new Parser();
			cssReader = new FileReader("test.css");
			
			p.setDocumentHandler(cssDocHandle);
			p.parseStyleSheet(new InputSource(cssReader));
			
		} catch (CSSException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}
}

Die Klasse MyCssDocumentHandler habe ich natürlich selbst geschrieben.
Sie implementiert das Interface: import org.w3c.css.sac.DocumentHandler

Nun knallt man alle Methoden rein und schon kanns losgehen ;)

Eigentlich einfacher als man denkt. Aber ich habe einfach den ganzen Krams
total verrafft. Naja nun läufts. Mein Problem war das ich das abhängige lib
batik-util.jar nicht mit eingebunden haben - so gabs etliche exceptions mit
denen ich nix anfangen konnte.

Danke für die Hilfe!

lg
 
Zuletzt bearbeitet:
Zurück