Ответ 1
Добавьте пространство имен abc в ваш XML файл.
<?xml version="1.0"?>
<abc:data xmlns:abc="your namespace">
Я изучаю ElementTree в python. Все кажется прекрасным, если только я не пытаюсь разобрать XML файл с префиксом:
test.xml
:
<?xml version="1.0"?>
<abc:data>
<abc:country name="Liechtenstein" rank="1" year="2008">
</abc:country>
<abc:country name="Singapore" rank="4" year="2011">
</abc:country>
<abc:country name="Panama" rank="5" year="2011">
</abc:country>
</abc:data>
Когда я пытаюсь разобрать xml:
import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')
Я получил следующую ошибку:
xml.etree.ElementTree.ParseError: unbound prefix: line 2, column 0
Нужно ли что-то указывать для того, чтобы разобрать XML файл с префиксом?
Добавьте пространство имен abc в ваш XML файл.
<?xml version="1.0"?>
<abc:data xmlns:abc="your namespace">
Посмотрите, работает ли это:
from bs4 import BeautifulSoup
xml_file = "test.xml"
with open(xml_file, "r", encoding="utf8") as f:
contents = f.read()
soup = BeautifulSoup(contents, "xml")
items = soup.find_all("country")
print (items)
Выше будет создан массив, которым вы можете затем манипулировать для достижения своей цели (например, удалить HTML-теги и т.д.):
[<country name="Liechtenstein" rank="1" year="2008"> </country>, <country name="Singapore" rank="4" year="2011"> </country>, <country name="Panama" rank="5" year="2011"> </country>]