私はPythonを使用してxmlファイルを読んでいます。私のPythonコードを実行している間、私のxmlファイルがあるため、そのうちの&
文字が含まれている。しかし、それは次のエラーを与える:Pythonは '&'文字の存在により 'Not well-formed xml'エラーを返します
xml.parsers.expat.ExpatError: not well-formed (invalid token):
は、Pythonで&
チェックを無視する方法はありますか?
私はPythonを使用してxmlファイルを読んでいます。私のPythonコードを実行している間、私のxmlファイルがあるため、そのうちの&
文字が含まれている。しかし、それは次のエラーを与える:Pythonは '&'文字の存在により 'Not well-formed xml'エラーを返します
xml.parsers.expat.ExpatError: not well-formed (invalid token):
は、Pythonで&
チェックを無視する方法はありますか?
いいえ、あなたはチェックを無視できません。あなたの「XMLファイル」はXMLファイルではありません.XMLファイルであるため、アンパサンドはエスケープする必要があります。したがって、XMLファイルを読み取るように設計されたソフトウェアは、エラーなしで解析することはありません。このファイルを生成したソフトウェアを修正して、適切な(整形式の)XMLを生成する必要があります。人々が整形式ではないものを送り始めると、それを受け取った人がパッチを当てようとすると、相互交換のためにXMLを使う利点はすべて消えます。
これは正しくありません。 1)XcodeのようなIDEだけでなく、インターネットブラウザのようなファイルを解析するソフトがたくさんあります。 2)XMLを生成するソフトを修正するように人々に依頼することはできません。なぜなら、一般的にはサードパーティソフトなのでです。 – LiMar
このようなファイルを解析できるソフトウェア製品があるかもしれませんが、そのようなソフトウェア製品はXMLパーサーではありません。 XMLファイルのすべてのエラーを報告するには、適合するXMLパーサーが必要です。インターネットブラウザは、私が設定できる限り、エスケープされていないアンパサンドが含まれている場合、XMLとして提供されるファイルを正しく拒否します。 –
ソフトウェアが悪いXMLを生成している場合は、それを修正することが適切な解決策です。悪質なXMLを生成することは、独自の独自のフォーマットを生成することと同じです。標準を採用し、それを適切に実装しないという点はありません。 –
私の場合は、文字列の前に "<?xml version='1.0' encoding='iso-8859-1'?>
"という文字列を追加するのがトリックでした。
>>> text = '''<?xml version="1.0" encoding="iso-8859-1"?>
... <seuss><fish>red</fish><fish>blu\xe9</fish></seuss>'''
>>> doc = elementtree.ElementTree.fromstring(text)
の https://mail.python.org/pipermail/tutor/2006-November/050757.html
可能重複し、このページを参照してください[どのようにXMLでアンパサンドをエスケープしますか?](http://stackoverflow.com/questions/1328538/how-do-i-escape-ampersands -in-xml) –
@James:実際にはそうではありません。なぜなら、XMLはほとんどではないが、最初は適切にXMLを作成する方法ではなく、何かを構文解析する方法です。 – geoffspear
あなたは本当にあなたに有効なXMLを与えることができるように、元の "XML"ファイルを作成しているどんな偽物が支配していますか? – geoffspear