21

我正在python中学习ElementTree。一切似乎都很好,除非我尝试使用前缀解析 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 文件?

4

2 回答 2

19

将 abc 命名空间添加到您的 xml 文件中。

<?xml version="1.0"?>
<abc:data xmlns:abc="your namespace">
于 2013-02-13T09:07:07.640 回答
0

看看这是否有效:

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>]
于 2019-08-16T07:17:30.757 回答