Уведомления

Группа в Telegram: @pythonsu

#1 Март 24, 2016 12:54:26

marvel
Зарегистрирован: 2016-03-24
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработать XML файл

Здравствуйте. Новичек в python.
Есть XML файл,который надо загрузить в таблицу если его упросить, то вид я написал ниже.
не понятно как получить набор данных чтобы сформировать скл запрос вида
insert into tbl (article,orgId) values ('100004',2213),values ('100006',2213))
Накатал такой код, но не пойду как получить родительский orgId?

xml = ‘'’<?xml version=“1.0” encoding=“UTF-8” standalone=“yes”?>
<services>
<service orgId=“2213”>
<service article=“100004”/>
<service article=“100006”/>
</service>
</services>'''

from lxml import etree

tree = etree.XML(xml)
nodes = tree.xpath('/services/service/service')
for node in nodes:
print node.values()

Спасибо.

Офлайн

#2 Март 24, 2016 16:26:35

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Обработать XML файл

>>> import lxml.etree
>>> 
>>> s = b"""\
... <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
... <services>
... <service orgId="2213">
... <service article="100004"/>
... <service article="100006"/>
... </service>
... <service orgId="2214">
... <service article="100005"/>
... <service article="100007"/>
... </service>
... </services>
... """
>>> 
>>> doc = lxml.etree.fromstring(s)
>>> 
>>> for node in doc.xpath(r'.//service[@orgId]'):
...     name = node.attrib['orgId']
...     nums = node.xpath(r'./service/@article')
...     out = [name] + nums
...     print(out)
... 
['2213', '100004', '100006']
['2214', '100005', '100007']
>>>



Отредактировано py.user.next (Март 24, 2016 16:28:08)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version