在XML中转义字符串
我正在使用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("<", "<")
str_xml = str_xml.replace(">", ">")
str_xml = str_xml.replace("\"", """)
str_xml = str_xml.replace("'", "'")
return str_xml
如果你查一下,就会发现 xml.sax.saxutils 只是做字符串替换而已
86
像这样吗?
>>> from xml.sax.saxutils import escape
>>> escape("< & >")
'< & >'
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><bar><a/><baz spam="eggs"> & blabla &entity;</></p>'