2013-05-02 54 views
0
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,内容如下:从已经逃逸防止minidom命名逃脱文本

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

但实际上却写着:

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

我怎么能逃跑停止minidom命名一个已经逃脱的序列?在我的应用程序中,文本是从一个(非xml)文档读取的,所以我不能简单地写text = '2 > 1'

回答

2

UNESCAPE插入前:写作时

from xml.sax.saxutils import unescape 

text = doc.createTextNode(unescape(text)) 

逃逸发生和不能被禁用,也不应该。有时候,你需要在你的XML中包含文字&gt;,如果你这样做,你应该正确地转义它。如果您的输入是XML转义的,只需在插入之前将其忽略即可。

+0

答案有效 – gsmaker 2013-05-02 13:35:01