3

在 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)
4

0 回答 0