Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
142 views
in Technique[技术] by (71.8m points)

python - How to output XML entity references

I am using Python xml.etree.ElementTree to output XML. I want to output it with entity references that will be substituted when the XML is parsed.

ordinarily '&' is escaped as & because '&' is used to declare entity references. However, I really do want to write an entity reference. For example, I want to write an XML file containing the entity reference &manifestName;:

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

Which returns an escaped ampersand:

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

The desired XML would be:

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

I have tried various escaping tricks, like &#38;, &, &&, but they do not work. The ampersands they contain are always rendered as &amp;.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I have decided to go with a relatively palatable hack. In the text, I use && to mean an escaped &. ElementTree converts this to &amp;&amp;. At the end, I simply do a string replacement on it:

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

The result is the entity reference I want:

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...