XMLを作成するためにPythonのelementtreeモジュールを使用しています(Python 2.7および3.2を使用しています)。一部の要素のテキストフィールドには、数値文字参照が含まれています。
ただし、elementtreeを使用するtostringと、文字参照のすべてのアンパサンドが。に置き換えられ&ます。どうやら、elementtreeまたは基礎となるパーサーは、ここでのアンパサンドが数値文字参照の一部であることを認識していません。
いくつか検索した後、私はこれを見つけました:elementtreeとentities
ただし、現在のコードでは、これが独自の問題を引き起こす可能性があると予測しているため、これにも熱心ではありません。それ以外は意外とほとんど気づかなかったので、何か明らかなものを見落としているのではないでしょうか。
次の簡単なテストコードは、問題を示しています(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()
誰かが素晴らしいアイデアや提案を持っているなら!