středa 2. května 2007

Java HTML parsery

Oproti parsování XML je zpracování HTML složitější v tom, že běžné dokumenty často nejsou správně formátované a parser tak musí být mnohem "chytřejší" a umět si poradit s chybějícími nebo špatně umístěnými tagy.
Ze zástupu HTML parserů pro Javu jsem vybral JTidy (javovskou implementaci poměrně známého HTML Tidy).

Výpis správně formátovaného dokumentu z nesprávně formátovaného vstupu na standardní výstup:
Tidy tidy = new Tidy();
tidy.setQuiet(true);
tidy.setShowWarnings(false);
tidy.parse(new FileInputStream("test.html"), System.out);


JTidy také umí výsledek parsování vrátit jako org.w3c.dom dokument, se kterým se pracuje běžnými DOM metodami. Výpis všech odkazů z dokumentu:
Document d = tidy.parseDOM(
new FileInputStream("test.html"), null);
NodeList l = d.getElementsByTagName("a");
for (int i = 0; i < l.getLength(); i++) {
Node n = l.item(i);
if (n instanceof Element) {
System.out.println(
((
Element) n).getAttribute("href"));
}
}
Update 4.7.2007: Podobnou věc řešil na svém blogu Leoš Literák, a v diskuzi si pár lidí na JTidy poněkud stěžovalo.

2 komentáře:

  1. pise se sformatovat nebo zformatovat ? co myslis ?

    OdpovědětVymazat
  2. No to mě mohlo napadnout, že spellchecker ve Firefoxu nebude jedinej, kdo si bude ztěžovat :)

    OdpovědětVymazat