【问题标题】:Preventing minidom from escaping already escaped text防止 minidom 转义已经转义的文本
【发布时间】:2013-05-02 13:22:54
【问题描述】:
import xml.dom.minidom

text='2 > 1'

impl = xml.dom.minidom.getDOMImplementation()
doc = impl.createDocument(None, "foobar", None)
docElem = doc.documentElement
text = doc.createTextNode(text)
docElem.appendChild(text)

f=open('foo.xml', 'w')
doc.writexml(f)
f.close()

我希望 foo.xml 如下所示:

<?xml version="1.0" ?><foobar>2 &gt; 1</foobar>

但实际上是这样写的:

<?xml version="1.0" ?><foobar>2 &amp;gt; 1</foobar>

如何阻止 minidom 转义已经转义的序列?在我的应用程序中,文本是从(非 xml)文档中读取的,所以我不能简单地写 text = '2 &gt; 1'

【问题讨论】:

    标签: python xml xml-serialization escaping minidom


    【解决方案1】:

    插入前取消转义:

    from xml.sax.saxutils import unescape
    
    text = doc.createTextNode(unescape(text))
    

    转义发生在写入时,不能被禁用,也不应该被禁用。有时您想要在您的 XML 中包含文字 &amp;gt; 文本,如果您这样做,应该为您正确转义。如果您的输入是 XML 转义的,只需在插入前取消转义即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多