Python ElementTree разбор неподдерживаемой префиксной ошибки

Я изучаю 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 файл с префиксом?

Ответ 1

Добавьте пространство имен abc в ваш XML файл.

<?xml version="1.0"?>
<abc:data xmlns:abc="your namespace">

Ответ 2

Посмотрите, работает ли это:

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>]