発生している問題
表記の通り、例えば、<div>&</div> のような文字列を、
xml.dom.minidom.parseString() の機能をつかってパースしたいのですが、
xml.parsers.expat.ExpatError となってしまいます。
該当のソースコード
python
1import xml.etree.ElementTree as ET 2import xml.dom.minidom as md 3 4xmlRoot = ET.Element('root') 5# ElementTreeでXMLを作成 6 7# 文字列パースを介してminidomへ移す 8document = md.parseString('<div>&</div>') 9 10file = open('test.xml', 'w') 11# エンコーディング、改行、全体のインデント、子要素の追加インデントを設定しつつファイルへ書き出し 12document.writexml(file, encoding='utf-8', newl='\n', indent='', addindent=' ') 13file.close()
やってみたこと
& (アンパサンド) をとりのぞいて .parseString() したところ、エラー無く終了したので、
& になにかしらのエスケープが必要なのではと考えているのですが、どのようにエスケープしたら良いでしょうか?
また、& 以外にもエスケープが必要な文字は存在するでしょうか?
そもそも xml.dom.minidom.parseString() ではなく、ほかの機能を使うべきだったり、他の言語を使用するべきなど、意見ありましたら、ご指摘お願いします。
質問の意図が100%分からなくて
「絶対にXMLではありえない文字列をXML Parserで処理したい」
「XMLの規格に従おうとはまったく思ってないけれどXML Parserは使いたい」
というような質問に読めてしまうのですが……
(直截の回答はすでに付いている通りと思います)