2016-08-03 7 views
1

XMLファイルから特定のデータを抽出する必要があるだけでなく、抽出された要素が元のXMLファイルにある位置を知る必要があります。またはその行の行番号+位置。元のファイルの位置へのリンクを維持しながらPythonでXMLを解析する

よく使われるpython XMLライブラリは、このような機能を提供していないようです。

html5libの周りにカスタムラッパーを書くことによって解決された同様の質問Obtaining position info when parsing HTML in Pythonがあります。特定のデータはHTMLではないので、そのライブラリは私のためには機能しません。

要素の位置情報を保持するXMLパーサーがありますか、それとも独自の解析をロールバックする必要がありますか?

+0

lxmlには 'sourceline'がありますが、これはあなたに行番号 – gsnedders

答えて

0

私はそういうものは存在しないと思います。ほとんどのパーサーは、まず構文解析を行い(テキストストリームをトークンに操作し、それをツリーに解析します)、その頃には、元のストリームのどこにいるかをよく知っています(これは解析エラーを出力するために必要です)。しかし、いったんオブジェクトツリーが構築されると、この情報は使用されなくなり、結果として得られるオブジェクトにアクセスすることができなくなります。

XML入力をトークン化し、元のストリーム位置を参照する「位置」属性を追加し、XMLを通常のライブラリで解析し、この属性を使用することができます後でユーザー情報を入力してください...

これをどのように行ったか教えてください!

関連する問題