如何在python etree中不正确地编写正确的转义XML?

时间:2015-08-14 06:49:42

标签: python xml elementtree

我正在使用python版本2.7.3。

test.xml:

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

我将使用elementtree更改xml中的文本。然后我写信给文件。 但&lt;更改为<等。它将是:

test.xml:

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

当我使用elementtree.write写入文件时我想看到的内容:

test.xml:

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

我想将此文本原样用于在XML中显示,因此我不希望XML解析器弄乱它。 有什么办法吗?

我使用此代码

import xml.etree.ElementTree as ET

class CommentedTreeBuilder(ET.XMLTreeBuilder):
    def __init__(self):
        ET.XMLTreeBuilder.__init__(self)
        self._parser.CommentHandler = self.handle_comment

    def handle_comment(self, data):
        self._target.start(ET.Comment, {})
        self._target.data(data)
        self._target.end(ET.Comment)


with open('test.xml', 'r') as f:
    tree = ET.parse(f, parser=CommentedTreeBuilder())
    root = tree.getroot()
    test = root.find('test')
    test.text += 'test'
    tree.write('test.xml', encoding="UTF-8", xml_declaration=True)

&gt没有问题。 &quot; &#x000A;有问题

0 个答案:

没有答案