[python] XML a ElementTree

Vlastimil Slinták vasco.vls na gmail.com
Čtvrtek Květen 12 19:16:01 CEST 2011


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

------------- další část ---------------
A non-text attachment was scrubbed...
Name: content.opf
Type: application/octet-stream
Size: 4690 bytes
Desc: [žádný popis není k dispozici]
URL: <http://www.py.cz/pipermail/python/attachments/20110512/743a2a1f/attachment.obj>


Další informace o konferenci Python