Найти - Пользователи
Полная версия: Парсер XML
Начало » Python для новичков » Парсер XML
1 2 3 4
8toni8
Нашел вот такую удобную, на мой взгляд, структуру.
 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 на русском языке?
py.user.next
  
>>> 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 на русском языке?
Даже если и существует, то такие переводы быстро устаревают, потому что исходная документация всё время меняется.
Учись переводить с английского (хоть гугл-переводчик, хоть что), потому что всегда будут эти проблемы. А многие важные вещи вообще не переведены.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB