Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > парсер xml


Автор: scion 18.2.2010, 01:30
нужно вытащить текст из xml'ки
вида
Код

  <card>
    <name>name cards</name>
    <description>много текста :)
    </description>
    <card_type>
      <name>Story</name>
    </card_type>
    <id type="integer">26377</id>
    <number type="integer">1241</number>
      <name>ooo</name>
      <identifier>oooo</identifier>
    </project>
    <version type="integer">7</version>

   .....

  </card>

нужно вытащить всё в из тега <name> и  <description>
как это делать?! с этим domом и element'ом замучился ничего не понимаю... в перле был XML::Simple я мог print Dumper (XML::Simpe->new()->XMLin()); а что делать в питоне не понимаю... уже думаю с помощью простого bash'а пропарсить... :(

Автор: MAKCim 18.2.2010, 09:59
Код

def read_str_node(elem):
    print("name[{0}]".format(elem.childNodes[0].nodeValue.strip()))

def read_card_type_node(elem):
    for child_elem in elem.childNodes:
        if child_elem.nodeType != xml.dom.Node.ELEMENT_NODE:
            continue
        if child_elem.nodeName == "name":
            read_str_node(child_elem)
        raise Exception("unknown tag name {0}".format(child_elem.nodeName))

def read_config(config_file):
    dom = dom = xml.dom.minidom.parse(config_file)
    elem = dom.getElementsByTagName("card")[0]
    for child_elem in elem.childNodes:
        if child_elem.nodeType != xml.dom.Node.ELEMENT_NODE:
            continue
        if child_elem.nodeName == "name":
            read_str_node(child_elem)
        elif child_elem.nodeName == "description":
            read_str_node(child_elem)
        elif child_elem.nodeName == "card_type":
            read_card_type_node(child_elem)
...

Автор: scion 22.2.2010, 23:16
ничего не понимаю... можно как-нибудь хоть немного прокомментировать.... а то совсем ничего не понятно =(

Автор: scion 23.2.2010, 01:23
как мне вывести данные?!

Автор: spSerg 23.2.2010, 22:09
http://docs.python.org/library/markup.html
а еще внизу есть раздел "А здесь смотрели?"

Автор: scion 24.2.2010, 02:46
ага. спасибо вроде дошло...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)