2013-05-02 104 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