Toto je nieco fakt velmi divne, ked to rozbije komplet subor. Pozeram, ze su kadejake bugy reportovane k tej metode. Htmlparser ma poslednu verziu z 2006, nechcete skusit fakt iny parser, lebo styri roky su styri roky? (Napr. validator.nu sa stale vyvija) Mozno vas este zaujme NekoHTML, ten sa da postavit ako filter pred Xerces.

http://nekohtml.sourceforge.net/index.html

On 18. 2. 2011 13:17, Dušan Rychnovský wrote:
Když jsem si ještě jednou prohlédl přiložené soubory, uvědomil jsem si, že jsem zapomněl připsat:

Kusy značek a atributů ("news", <li>, ...) rozmístěné doprostřed kódu pocházejí z jiných částí parsované stránky. Celkově to působí, jakobych upravil parsovaný soubor beze změny uloženého DOMu a při jeho opětovném načtení se porušily odkazy do parsovaného souboru a proto je výsledkem takovýto "rozházený" soubor.

Proto jsem se snažil najít místo, kde by došlo ke změně DOMu a zároveň neupravení původního dokumentu podle metody toHTML(), ale nenašel jsem takové.

Dušan Rychnovský


2011/2/18 Dušan Rychnovský <[email protected] <mailto:[email protected]>>

    Co znamena "velmi rozhozeny"?

    Podle vzniklého souboru lze poznat, že souvisí s původním
    souborem. Ale

    1. Má rozhozené kódování.
    2. Textový obsah i formátovací značky jsou porušené.

    Nedaří se mi situaci pořádně popsat, proto přikládám ukázku
    původního a vzniklého kódu.


    S tím, že k nějakým změnám kódu dojde (opravám kvůli převodu
    nonwellformed HTML do DOM) počítám. U mě však dochází ke
    znehodnocení celého kódu (viz přiložené soubory).

    Na odkázaný parser se určitě podívám, děkuju.

    Dušan Rychnovský



    2011/2/18 Ondrej Nekola <[email protected] <mailto:[email protected]>>

        Co znamena "velmi rozhozeny"?
        S pozdravem
                Ondřej Nekola



        2011/2/18 Dušan Rychnovský <[email protected]
        <mailto:[email protected]>>:
        > 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ý
        >
        >




Odpovedet emailem