私はいくつかのXMLを書くためにPythonのelementtreeモジュールを使用しています(私はPython 2.7と3.2を使用しています)。私の要素のいくつかのテキストフィールドには数字の文字参照が含まれています。Pythonのelementtreeによる数値参照のアンパサンドの置換
ただし、elementtreeのtostring
を使用すると、文字参照内のすべてのアンパサンドが&
に置き換えられます。明らかにelementtreeまたは基礎となるパーサーは、ここでのアンパサンドが数値参照の一部であることを認識しません。
は、いくつかの検索後、私はこれが見つかりました:elementtree and 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()
誰もが素晴らしいだろう任意のアイデアや提案を持っている場合!
XMLシリアライザへの実体参照を供給することはできません。それらの文字をそのまま使用してください。 – millimoose
ありがとう!すでにそれを恐れていた... – johan
'someText'は実際にどこから来たのですか? – Tomalak