Pěkný komplexní článek, ale chybí mi tam bezpečnostní hledisko. Pokud někdo použije uvedené příklady parsování XML, tak si do aplikace může zavést nepříjemnou zranitelnost XXE - XML External Entity Processing (už jsem o tom mluvil: https://www.slideshare.net/vsmitka/drobn-chyby-kter-vm-mohou-zlomit-vaz/19).
Myslím, že nejjednodušší by bylo místo "čistého" lxml použvat wrapper https://pypi.org/project/defusedxml/.
Samozřejmě to lze řešit i nastavením parseru, ale to se pak musí všude ohlídat:
parser = ET.XMLParser(resolve_entities=False)
tree = ET.parse(xml, parser)
Dobrý den,
jak je to s rychlostí zpracování DOMu? (o SAX mi teď nejde, máme aplikaci napsanou jinak :-).
Máme XMLka s řádově tisíci elementy v ploché struktuře. V podstatě root element a pod ním tisíce databázových záznamů. My to takto nevymysleli, jen konzumujeme :-). Bude na tom lxml výkonnostně porovnatelný s libxml nebo máme čekat nějaké zásadní záseky. V podstatě by například zpomalení o 10% nevadilo, pokud bude kód lepší a čitelnější i pro mladší kolegy :-)
jasne to udelam. jen by me zajimalo, jestli treba nejaky dlouhodobejsi uzivatel neprisel na to, ze se kazdou sudou stredu v mesici import zpomali nebo neco takoveho :) Nebo ze je tam exponencialni slozitost v zavislosti na poctu vnorenych uzlu, ja nevim.
Ale ne, to zkazil redakční systém tady na Rootu :(
Moc se omlouvám, on je tam samozřejmě dvojí quotování a evidentně to nezvládá.
Správné verze jsou na Gitu:
https://github.com/tisnik/lxml-examples/blob/master/test2.xml
https://github.com/tisnik/lxml-examples/blob/master/test3.xml
Díky za upozornění a popravdě nevím, jak to v redakčním systému opravit. Nicméně zkusím.