Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 12, 2018 19:43:12

8toni8
Зарегистрирован: 2018-01-01
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсер XML

Нашел вот такую удобную, на мой взгляд, структуру.

 from lxml import etree
doc='''<data>
    <items>
        <item name="item1">1</item>
        <item name="item2">2</item>
        <item name="item3">3</item>
        <item name="item4">4</item>
    </items>
</data>'''
tree = etree.fromstring(doc)
print (tree.xpath('/data/items/item[@name="item1"]/text()'))

В связи с этим у меня возникло несколько вопросов:

1. Я так понимаю это и есть так называемый xpath-запрос?

2. Скажите можно ли выполнять такие запросы используя стандартные библиотеки?

Дело в том, что я так и не разобрался как используя стандартную библиотеку XML взять значение тегов <item> ориентируясь на значения name= .

Максимально до, чего додумался, это используя функции attributes и childNodes, запихнуть значения в отдельные списки, и убедившийся что длинна двух списков одинаковая. Найти индекс конкретного значения в первом списке, зная это можно догадаться, что искомое значение будет лежать во втором списке под таким же индексом, вот такой вот быдлокод)) Надеюсь на снисхождение

3. Да и еще один “околотемный” вопрос, существует ли описание стандартной библиотеки XML на русском языке?

Офлайн

#2 Янв. 13, 2018 01:48:24

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

Парсер XML

  
>>> import xml.etree.ElementTree as ET
>>> 
>>> doc = """\
... <data>
...     <items>
...         <item name="item1">1</item>
...         <item name="item2">2</item>
...         <item name="item3">3</item>
...         <item name="item4">4</item>
...     </items>
... </data>"""
>>> 
>>> tree = ET.fromstring(doc)
>>> tree.find('.//item[@name="item1"]').text
'1'
>>> tree.find('.//item[@name="item4"]').text
'4'
>>>

8toni8
существует ли описание стандартной библиотеки XML на русском языке?
Даже если и существует, то такие переводы быстро устаревают, потому что исходная документация всё время меняется.
Учись переводить с английского (хоть гугл-переводчик, хоть что), потому что всегда будут эти проблемы. А многие важные вещи вообще не переведены.



Отредактировано py.user.next (Янв. 13, 2018 01:50:26)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version