[python] Parsování XML - ExpatError: not well-formated

Honza Javorek jan.javorek na gmail.com
Pondělí Červenec 15 18:11:22 CEST 2013


Ahoj,

pokud chceš parsovat XML v Pythonu, doporučuji knihovnu lxml, která je asi
tím nejrychlejším a nejvybavenějším nástrojem, jaký máš pro tento úkol k
dispozici. XML, které chceš parsovat, by mělo být validní - tzn. být přesně
podle specifikace, bez chyb, musí být well-formed. Další věc je kódování
souboru - pokud je XML uloženo v utf-8, je vše v pořádku a mělo by se ti
povést jej přečíst. Pokud je soubor v jiném kódování, MUSÍ mít na začátku
hlavičku (XML deklaraci) s definovaným kódováním, např.

<?xml version="1.0" encoding="winodws-1250" ?>

Pokud tam hlavička není, předpokládá se UTF-8. Je-li v tomto nějaký rozkol,
parser spadne na kolizních znacích.

Jestli máš nevalidní XML a stejně ho potřebuješ zparsovat, tak to je pak už
trochu vyšší dívčí - nejjednodušeji to jde řešit asi tak, že místo XML
parseru použiješ nějaký HTML parser, který je benevolentnější (byť, pozor,
v detailech není s XML parserem úplně zaměnitelný), např.
http://lxml.de/lxmlhtml.html

Více ti asi bez znalosti toho XML neporadím.

H



2013/7/15 <michal.petrek na gmail.com>

> Zdravím.
> Píšu v pythonu parser XML. Při parsování některých XML však dojde k chybě:
> xml.parsers.expat.ExpatError: not well-formed (invalid token): line 3270,
> column 529
>
> Dočetl jsem se že se může jednat o problém pokud XML obsahuje unicode
> znaky. Už jsem ale nenašel žádné informace jak tento problém efektivně
> řešit.
>
> Máte s tímto někdo zkušenosti ? Mohl by jste mi prosím někdo poradit jak
> bych toto mohl řešit?
>
> Pro parsování používám ElementTree, python 2.7
>
> Děkuji
> MP
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://www.py.cz/pipermail/python/attachments/20130715/d54c142a/attachment.html>


Další informace o konferenci Python