Разбор нескольких пространств имен XML в python с использованием lxml

$dbhandle = sqlsrv_connect($myServer, $myUser, $myPass)
  or die("Couldn't connect to SQL Server on $myServer"); 

Надеюсь, что это поможет.

1
задан Ahtsham Manzoor 5 March 2019 в 12:16
поделиться

1 ответ

XML имеет несколько пространств имен, но единственное пространство имен, о котором вам нужно беспокоиться, это http://www.smartraveller.gov.au/schema/rss/travel_advisories/.

Это потому, что единственными элементами на пути к вашей цели, которые находятся в пространстве имен, являются ta:level и ta:warning.

Пример ...

from lxml import etree
import requests

req = requests.request('GET', "https://smartraveller.gov.au/countries/documents/index.rss")
a = str(req.text).encode()

tree = etree.fromstring(a)

ns = {'ta': 'http://www.smartraveller.gov.au/schema/rss/travel_advisories/'}

e = tree.findall('channel/item/ta:warnings/ta:level', ns)
for i in e:
    print(i.text)

печатает ...

2/5
2/5
4/5
2/5
...and so on

Если вам нужен список, подумайте о переключении с findall() на xpath() ...

e = tree.xpath('channel/item/ta:warnings/ta:level/text()', namespaces=ns)
print(e)

печатает ...

['2/5', '2/5', '4/5', '2/5', and so on...]
0
ответ дан Daniel Haley 5 March 2019 в 12:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: