如何在python etree中获取正确的转义XML?

时间:2014-05-07 11:33:27

标签: python xml xml.etree

我使用的是python版本2.7.3。

的test.txt:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <test>The tag &lt;StackOverflow&gt; is good to bring up at parties.</test>
</root>

结果:

>>> import xml.etree.ElementTree as ET
>>> e = ET.parse('test.txt')
>>> root = e.getroot()
>>> print root.find('test').text
The tag <StackOverflow> is good to bring up at parties.

如您所见,解析器必须已将&lt;更改为<等。

我希望看到的内容:

The tag &lt;StackOverflow&gt; is good to bring up at parties.

未触动的原始文字。有时我真的很喜欢它。未煮过。

我希望将此文本原样用于在HTML中显示,因此我不希望XML解析器弄乱它。

我是否必须重新逃离每根弦?还是可以采用其他方式?

1 个答案:

答案 0 :(得分:2)

import xml.etree.ElementTree as ET
e = ET.parse('test.txt')
root = e.getroot()
print(ET.tostring(root.find('test')))

产量

<test>The tag &lt;StackOverflow&gt; is good to bring up at parties.</test>

或者,您可以使用saxutils.escape转义文本:

import xml.sax.saxutils as saxutils
print(saxutils.escape(root.find('test').text))

产量

The tag &lt;StackOverflow&gt; is good to bring up at parties.