python - 如何在未触及的 python etree 中正确转义 XML?

标签 python xml xml.etree

我使用的是 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;<的等

我想看到的:

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

未修改的原始文本。有时我真的很喜欢生吃。生的。

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

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

最佳答案

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.

关于python - 如何在未触及的 python etree 中正确转义 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23516664/

相关文章:

python - 如何从 pyside 中的 QTableWidget 获取表格单元格值?

python - 使用python在cmd中打印UTF-8字符

python - 如何处理与坐标的碰撞? (在 python 中)

php - 如何使用 PHP 将动态生成的 XML 文档保存到数据库中?

python-3.x - 导入错误 : cannot import name 'etree' on Python 3. 6

python - 在 Python 中使用正则表达式删除重复的单词

php - 如何使用 php simpleXML 在现有 xml 中添加节点?

regex - 从未知(对我来说)编码中删除不可打印的空格

python - 使用 Python etree 更新 XML 元素和属性值

python - 如何在 python xml.etree.ElementTree 中删除迭代器内的节点