Python: Unicode и ElementTree.parse

Я пытаюсь переместиться в Python 2.7 и так как Unicode является Грандиозное предприятие там, я попытался бы иметь дело с ними с XML-файлами и текстами и проанализировал бы их использующий xml.etree.cElementTree библиотека. Но я натыкался на эту ошибку:

>>> import xml.etree.cElementTree as ET
>>> from io import StringIO
>>> source = """\
... <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
... <root>
...   <Parent>
...     <Child>
...       <Element>Text</Element>
...     </Child>
...   </Parent>
... </root>
... """
>>> srcbuf = StringIO(source.decode('utf-8'))
>>> doc = ET.parse(srcbuf)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 56, in parse
  File "<string>", line 35, in parse
cElementTree.ParseError: no element found: line 1, column 0

То же самое происходит с помощью io.open('filename.xml', encoding='utf-8') передать ET.parse:

>>> with io.open('test.xml', mode='w', encoding='utf-8') as fp:
...     fp.write(source.decode('utf-8'))
...
150L
>>> with io.open('test.xml', mode='r', encoding='utf-8') as fp:
...     fp.read()
...
u'<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>\n<root>\n  <Parent>\n
    <Child>\n      <Element>Text</Element>\n    </Child>\n  </Parent>\n</root>\n
'
>>> with io.open('test.xml', mode='r', encoding='utf-8') as fp:
...     ET.parse(fp)
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "<string>", line 56, in parse
  File "<string>", line 35, in parse
cElementTree.ParseError: no element found: line 1, column 0

Есть ли что-то о unicode и ET, анализируя это, я отсутствую здесь?

править: По-видимому, синтаксический анализатор ET не играет хорошо с входным потоком unicode? Следующие работы:

>>> with io.open('test.xml', mode='rb') as fp:
...     ET.parse(fp)
...
<ElementTree object at 0x0180BC10>

Но это также означает, что я не могу использовать io.StringIO если я хочу проанализировать из текста в оперативной памяти, если я не кодирую его сначала в буфер в оперативной памяти?

10
задан Santa 5 August 2010 в 19:25
поделиться