如何在Python etree中获取未修改的正确转义XML?
我正在使用 Python 版本 2.7.3。
test.txt 文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<test>The tag <StackOverflow> 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.
你可以看到,解析器把 <
变成了 <
等等。
我想要看到的内容:
标签 <StackOverflow> 在聚会上提起来很好。
原汁原味的文本。有时候我真的喜欢这种原始的感觉。不加修饰。
我想直接用这些文本在 HTML 中显示,所以我不希望 XML 解析器来干扰它。
我是不是得重新转义每个字符串,还是有其他办法呢?
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 <StackOverflow> 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 <StackOverflow> is good to bring up at parties.