8

我正在使用 python 2.7.3 版。

测试.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;'s 更改为<'s 等。

我想看到的:

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

未触及的原始文本。有时我真的很喜欢生的。生。

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

我必须重新转义每个字符串还是可以有其他方法?

4

1 回答 1

5
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.
于 2014-05-07T11:37:30.887 回答