Dobrý den. Vytvářím program (JSE), který zpracovává HTML stránky. Stránku vždy stáhnu z webu na disk, vybuduju nad ní DOM Tree a pomocí něj pak provádím různé úpravy.
Pro stavbu DOM používám knihovnu "HTML Parser" ( http://htmlparser.sourceforge.net/), a to z několika důvodů. 1. Potřebuju zpracovávat běžné webové stránky (tj. stránky s chybami oproti XML standardům). 2. Potřebuju je zpracovávat rychle. 3. Změny v HTML kódu chci uchovávat i mezi spuštěními programu - potřebuju DOM serializovat. Zjistil jsem, že "HTML Parser" při vytváření stromu nekopíruje textové elementy do paměti, ale nějakým způsobem se zřejmě odkazuje na části zparsovaného HTML souboru. Proto pokaždé, když provedu změnu v HTML kódu, uložím na disk (serializuju) změněný DOM a přepíšu parsovaný HTML soubor pomocí metody toHtml() třídy NodeList (aby si vždy DOM a parsovaná stránka odpovídaly). Tento postup funguje v pořádku až do té doby, než program vypnu a znovu zapnu (tj. zřejmě dokud neproběhne deserializace DOMu). Potom dostávám při prvním volání toHtml() dokument velmi rozhozený. Kontroloval jsem několikrát, jestli se někde v průběhu nedostane dvojice DOM - parsovaný soubor do nekonzistentního stavu, ale chybu jsem nenašel. Takže přemýšlím, jestli vůbec "HTML Parser" takovéto zacházení podporuje (dokumentace je dost chudá). Máte někdo podobné zkušenosti s tímto parserem? Nebo víte o vhodnějším parseru pro moje účely (vygooglil jsem i různé jiné parsery, ale vždy se mi z nějakého důvodu zdály nevhodné)? Díky za pomoc, Dušan Rychnovský