2011-11-02 101 views
1

我正在使用Python xml.etree.ElementTree输出XML。我想输出它与实体引用,这将在解析XML时被替换。如何输出XML实体引用

通常'&'被转义为&,因为'&'用于声明实体引用。不过,我真的要想写一个实体引用。例如,我想编写包含实体引用&manifestName;的XML文件:

>>> from xml.etree.ElementTree import Element, tostring 
>>> manifest = Element('manifest') 
>>> manifest.text = '&manifestName;' 
>>> tostring(manifest) 

返回一个转义符号:

'<manifest>&amp;manifestName;</manifest>' 

所需的XML是:

'<manifest>&manifestName;</manifest>' 

我尝试过各种逃避技巧,如&#38;,\&,&&,但他们不工作。它们包含的&符号总是呈现为&amp;

+0

见http://stackoverflow.com/questions/2360598/how-做-I-UNESCAPE-HTML实体-IN-A-字符串中的Python-3-1 – 2011-11-03 03:44:34

回答

0

我决定去一个相对可口的黑客。在案文中,我使用&&表示逃脱&。 ElementTree将其转换为&amp;&amp;。最后,我简单做一个字符串替换就可以了:

>>> from xml.etree.ElementTree import Element, tostring 
>>> manifest = Element('manifest') 
>>> manifest.text = '&&manifestName;' 
>>> tostring(manifest).replace('&amp;&amp;', '&') 

结果是实体引用我想:

'<manifest>&manifestName;</manifest>'