0

lxmlいくつかのXMLファイルを解析して出力するために使用しようとしています。ただし、XMLファイルにはいくつかの特殊文字があります。複雑すぎてエスケープしたりアンエスケープしたりできないので、交換したくありません。また、他の人に整形式のXMLを作成させることはできません。

Pythonで整形式でないXMLをlxmlで処理できるようにする方法はありますか?

私はそれを正しく読むことができます:

  parser = etree.XMLParser(recover=True)
  root = etree.parse(sys.argv[1],parser=parser)

ただし、要素テキストを印刷する場合は、特殊文字が出現するまでコンテンツしか印刷できません。

  for element in root.iter("content"):
    print("%s - %s  attr - %s" % (element.tag, element.text, element.get("name"))) 
4

2 に答える 2

1

lxmlは透過的にエスケープを解除します。したがって、最初に入力の無効な文字を修正してから、結果をlxmlにフィードすることができます。たとえば、無効な文字をエスケープするための単純な正規表現ベースのソリューションを試すことができます。

于 2012-11-16T03:46:50.597 に答える
0

Pythonで完全ではないマークアップ言語ファイルを処理するための一般的なオプションは、BeautifulSoupを使用することです。lxmlを含む多くのパーサーを使用できます。

問題を引き起こしているXMLのいくつかを投稿できますか?

于 2012-11-16T03:33:17.110 に答える