Október 7, 2010

Prechádzka po XML s namespace v Pythone

V predchádzajúcom príspevku “Jednoduchá prechádzka po XML v Pythone”, som ukázal, ako je možné parsovať XML pomocou Pythonu.

Čo ale v prípade, že potrebujeme použiť namespace?

Namespace sa expanduje do tvaru {namespace}element. Čo sa odrazí napríklad v príkaze find. Výsledný kód bude vyzerať nasledovne:

from xml.etree import ElementTree
xmlTest="""
 <s:xml xmlns:s="library://ns.adobe.com/flex">
  <s:person>
  <s:id>573280</s:id>
  <s:type>Supplier</s:type>
 </s:person>
 <s:person>
  <s:id>66172</s:id>
  <s:type>Customer</s:type>
 </s:person>
</s:xml>
"""

tree = ElementTree.fromstring(xmlTest)

namespace="library://ns.adobe.com/flex"
for person in tree:
  type = person.find('{%s}type' % namespace)
  id = person.find('{library://ns.adobe.com/flex}id')
  if type.text == 'Supplier':
    print "Supplier:",id.text

Všimnime si jednoduchý trik s %s na riadku s type = person.find.

  • Preklady

  • Odkazy

  • Twitter

    Follow @jurajmichalek on twitter.

  • Štítky

  • Rubriky

  • Komentáre