4

我有一个小的 xml 解析 python 片段,它适用于 ElementTree,但不适用于 cElementTree。这是为什么?

#!/usr/bin/python3

import sys
import xml.etree.cElementTree as ET

tree = ET.parse(sys.stdin)

这引发了异常:

cElementTree.ParseError: no element found: line 1, column 0

当它像这样调用时

echo "<a><b>c</b></a>" | ./xmltest.py

编辑:我刚刚注意到该片段在 python 2.7.2 中有效,但在 python 3.2.2 或 3.1.4 中无效,知道为什么吗?

更新:它似乎已在 python 3.3 中修复

4

1 回答 1

4

您遇到了最近在Issue 14246中记录的错误。在修复之前,Python 3 的一种解决方法是更改sys.stdin​​为byte流而不是string流:

import sys
import xml.etree.cElementTree as ET

sys.stdin = sys.stdin.detach()
tree = ET.parse(sys.stdin)
于 2012-03-12T15:08:06.040 回答