在XML中转义字符串

41 投票
7 回答
48954 浏览
提问于 2025-04-15 14:58

我正在使用Python的xml.dom.minidom来创建一个XML文档。也就是说,我是先有逻辑结构,然后把它变成XML字符串,而不是反过来。

我该怎么做才能让它处理我提供的字符串,以免这些字符串搞乱XML呢?

7 个回答

24

xml.sax.saxutils 不会对引号字符(")进行转义

所以这里还有一个例子:

def escape( str_xml: str ):
    str_xml = str_xml.replace("&", "&")
    str_xml = str_xml.replace("<", "&lt;")
    str_xml = str_xml.replace(">", "&gt;")
    str_xml = str_xml.replace("\"", "&quot;")
    str_xml = str_xml.replace("'", "&apos;")
    return str_xml

如果你查一下,就会发现 xml.sax.saxutils 只是做字符串替换而已

86

像这样吗?

>>> from xml.sax.saxutils import escape
>>> escape("< & >")   
'&lt; &amp; &gt;'
15

你的意思是你这样做吗:

from xml.dom.minidom import Text, Element

t = Text()
e = Element('p')

t.data = '<bar><a/><baz spam="eggs"> & blabla &entity;</>'
e.appendChild(t)

这样的话,你就会得到一个格式正确的XML字符串:

>>> e.toxml()
'<p>&lt;bar&gt;&lt;a/&gt;&lt;baz spam=&quot;eggs&quot;&gt; &amp; blabla &amp;entity;&lt;/&gt;</p>'

撰写回答