Python ElementTree parsing unbound prefix error

偶尔善良 提交于 2019-12-09 02:26:27

问题


I am learning ElementTree in python. Everything seems fine except when I try to parse the xml file with prefix:

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>

When I try to parse the xml:

import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')

I got the following error:

xml.etree.ElementTree.ParseError: unbound prefix: line 2, column 0

Do I need to specify something in order to parse a xml file with prefix?


回答1:


Add the abc namespace to your xml file.

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



回答2:


See if this works:

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)

The above will produce an array which you can then manipulate to achieve your aim (e.g. remove html tags etc.):

[<country name="Liechtenstein" rank="1" year="2008">
</country>, <country name="Singapore" rank="4" year="2011">
</country>, <country name="Panama" rank="5" year="2011">
</country>]


来源:https://stackoverflow.com/questions/13372604/python-elementtree-parsing-unbound-prefix-error

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!