在 python 中解析我的 zenoss 服务器上的 XML 文档时出现错误。如何绕过错误/修复错误?
这是代码:
import xml.etree.ElementTree as ET
tree = ET.parse('/root/Dropbox/Public/N8800Space.xml')
root = tree.getroot()
这是 XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<root>
<item>
<value>125</value>
<label>Used</label>
<colour>FFFF10AA</colour>
</item>
<item>
<value>125</value>
<label>Free</label>
<colour>FF0010AA</colour>
</item>
</root>
这是输出:
Traceback (most recent call last):
File "geckoBoard.py", line 2, in <module>
tree = ET.parse('/root/Dropbox/Public/N8800Space.xml')
File "/usr/lib64/python2.6/xml/etree/ElementTree.py", line 862, in parse
tree.parse(source, parser)
File "/usr/lib64/python2.6/xml/etree/ElementTree.py", line 586, in parse
parser.feed(data)
File "/usr/lib64/python2.6/xml/etree/ElementTree.py", line 1245, in feed
self._parser.Parse(data, 0)
File "/usr/lib64/python2.6/xml/etree/ElementTree.py", line 1188, in _end
return self._target.end(self._fixname(tag))
File "/usr/lib64/python2.6/xml/etree/ElementTree.py", line 1096, in end
self._last.tag, tag)
AssertionError
另外,如果我用 etree 做,我会得到一个 UnicodeEncodeError
代码:
from lxml import etree
doc = etree.parse('/root/Dropbox/Public/N8800Space.xml')
root = doc.getroot()
输出:
Traceback (most recent call last):
File "geckoBoard.py", line 1, in <module>
from lxml import etree
File "lxml.etree.pyx", line 123, in init lxml.etree (src/lxml/lxml.etree.c:156336)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)