0

次を使用して、最後にチェックサムが付いたツリーを繰り返し解析しようとしています。

import xml.etree.cElementTree as et
for event, elem in et.iterparse("C:\myXMLfile.xml"):
    if elem.tag == "Signature":
        elem.clear()

これにより、ParseError: reference to invalid character number: line 4205, column 25このキャラクターが発生します。<Signature value="e?'O;????5?u??c???]????<??jX" />

elem.clear()ステートメントはそれを回避する方法だと思いましたが、クリアする前に属性を処理しているようです。最初に処理せずにこの要素をクリアする方法はありますか?

4

2 に答える 2

1

これが私がやったことです:

  1. XMLファイルをテキストとしてメモリに読み込みます。
  2. 正規表現を使用してタグを見つけます。
  3. 開始タグと終了タグの間のすべてを削除します。
  4. XMLファイルに書き換えます。
  5. 新しいXMLファイルを解析します。
  6. 私の陽気な道に行きなさい。
于 2013-04-11T21:53:17.890 に答える
0

xml.etree.cElementTree.iterparseの定義を見ると、「start」イベント(デフォルトでは「end」イベント)についてレポートできるイベントのオプションのパラメーターがあることがわかります。ifこれを利用して、開始イベントの後にelem.clear()を実行し、ダブルブランチステートメントとして終了イベントに進むことができます。

于 2012-06-07T23:10:06.823 に答える