我正在使用 Python 的 elementtree 模块来编写一些 XML(我正在使用 Python 2.7 和 3.2)。我的一些元素的文本字段包含数字字符引用。
但是,一旦我使用 elementtree 的tostring
字符引用中的所有 & 符号,就会被替换为&
. 显然 elementtree 或底层解析器不承认这里的&符号是数字字符引用的一部分。
经过一番搜索,我发现了这个:elementtree and entity
但是,我也不热衷于此,因为在我当前的代码中,我预见到这最终可能会导致其自身的问题。除此之外,我在这方面发现的很少,所以也许我只是忽略了一些明显的东西?
下面的简单测试代码说明了这个问题(使用 Python 2.7 和 3.2 测试):
import sys
import xml.etree.ElementTree as ET
def main():
# Text string that contains numeric character reference
someText = "Ström"
# Create element object
testElement = ET.Element('rubbish')
# Add someText to element's text attribute
testElement.text = someText
# Convert element to xml-formatted text string
testElementAsString = ET.tostring(testElement,'ascii', 'xml')
print(testElementAsString)
# Result: ampersand replaced with '&': <rubbish>Str&#246;m</rubbish>
main()
如果有人有任何想法或建议,那就太好了!