Jen obecná poznámka...

Na http://diveintopython3.py.cz/ jsem umístil HTML verzi českého překladu Dive Into Python 3.  Doporučuju kapitolu 12. XML http://diveintopython3.py.cz/xml.html. Lepší je momentálně
asi jen lxml, která používá stejné aplikační rozhraní, ale podporuje víc do 
hloubky XPath...

V Python 2 se s ElementTree dělá podobně.

Měj se fajn,
    Petr
______________________________________________________________
> Od: "Vlastimil Slinták"
> Komu: Konference PyCZ > Datum: 12.05.2011 19:16
> Předmět: [python] XML a ElementTree
>
Zdravím,

snažím se v Pythonu parsovat XML soubor pomocí xml.etree.ElementTree. Chtěl 
bych z xml stromu načíst obsah některých konkrétních tagů a případně je změnit 
a zapsat zpět. Bohužel se mi to nedaří.

Abych nemluvil obecně — snažím se udělat si pořádek ve své elektronické 
knihovně, která obsahuje knihy ve formátu EPUB. To je v podstatě ZIP archiv, 
který obsahuje soubor content.opf se všemi informacemi. V tomto souboru, který 
má formát XML, jsou uloženy informace o autorovi, názvu knihy, ISBN a další 
(viz příloha).

V Pythonu zkouším něco takového:

import xml.etree.ElementTree as ET

tree = ET.parse('content.opf’)

# Všechny elementy mohu projít přes iterátor:
for e in tree.getiterator():
print e.tag

# Mně ale zajímají pouze některé elementy,
# zkouším je najít...
tree.find(’title’)
tree.find('package/metadata/title’)

# Ani přes kořenový element se nedaří
root = tree.getroot()
root.find(’title’)
root.find('package/metadata/title’)

# Pokud se pokusím vyhledat tag ‚title’ včetně
# jmenného prostoru, dostanu výjimku
root.find('dc:title’)
>>> SyntaxError: expected path separator (:)

Pravděpodobně jsem jenom nepochopil jak se pracuje s XML. Jak mám načíst obsah 
jenom těch elementů, které mě zajímají abych s nimi mohl dál pracovat? 
Případně, existuje lepší knihovna na práci s XML v Pythonu?

S pozdravem,
VS


_______________________________________________
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

_______________________________________________
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Odpovedet emailem