如果attrib值为整数,Python xml.etree.ElementTree会引发ParseError

时间:2014-04-07 21:07:52

标签: python xml parsing elementtree

我正在尝试解析一个具有少量attrib值的xml是整数。在这种情况下,python ElementTree类会引发一个ParseError

xml.etree.ElementTree.ParseError:格式不正确(令牌无效):第120行,col 第32页

这是我的xml

<Rectangle
  leftTopX = 0
  leftTopY = 0
  rightBottomX = 20
  rightBottomY = 40
/>

有关如何避免此ParseError的任何建议吗?

以下面的方式修改attrib值可以作为我的问题的解决方案。但我有多个要解析的xml文件。更改attrib值将花费更多时间。

<Rectangle
  leftTopX = "0"
  leftTopY = "0"
  rightBottomX = "20"
  rightBottomY = "40"
/>

1 个答案:

答案 0 :(得分:1)

您可以切换到BeautifulSoup解析器 - 它在良好的形式方面更加宽容。例如:

from bs4 import BeautifulSoup


data = """
<Rectangle
  leftTopX = 0
  leftTopY = 0
  rightBottomX = 20
  rightBottomY = 40 />
"""

soup = BeautifulSoup(data)
print soup.rectangle

打印:

<rectangle lefttopx="0" lefttopy="0" rightbottomx="20" rightbottomy="40"></rectangle>

您也可以将其与lxml解析器一起使用(您需要安装lxml):

soup = BeautifulSoup(data, "lxml")

希望有所帮助。