Например, чтобы читать RSS-канал, это не работает из-за глупые {http://purl.org ...} пространств имен, которые вставляются перед «пунктом»:Как перемещаться по дереву XML, не беспокоясь о префиксах пространства имен в Python?
#!/usr/bin/env python3
import xml.etree.ElementTree as ET
import urllib, urllib.request
url = "http://some/rss/feed"
response = urllib.request.urlopen(url)
xml_text = response.read().decode('utf-8')
xml_root = ET.fromstring(xml_text)
for e in xml_root.findall('item'):
print("I found an item!")
Теперь, когда FindAll() было вынесено бесполезно из-за {} префиксов, вот еще одно решение, но это некрасиво:
#!/usr/bin/env python3
import xml.etree.ElementTree as ET
import urllib, urllib.request
url = "http://some/rss/feed"
response = urllib.request.urlopen(url)
xml_text = response.read().decode('utf-8')
xml_root = ET.fromstring(xml_text)
for e in xml_root:
if e.tag.endswith('}item'):
print("I found an item!")
Могу ли я получить ElementTree просто мусор всех префиксов?