cElementTreeを使用してPythonでXMLファイルを解析します。ファイル内のエラーと行番号の処理

StackOverflow https://stackoverflow.com/questions/1250192

質問

私が使用しているのは、 cElementTree Python で XML ファイルを解析するためのライブラリ。すべてがうまく機能しています

ただし、XML の値が正しくない場合には、完全なエラー メッセージをユーザーに提供したいと考えています。

たとえば、次の XML があるとします。

<A name="xxxx" href="yyyy"/>

ユーザーに次のことを伝えたいと考えています。 href 属性が存在しないか、指定されたリストにない値が含まれています。

現時点では、次のようなものがあります

if elem.get("ref") not in myList:
    raise XMLException( elem, "the 'href' attribute is not valid or does not exist")

私の例外がどこかでキャッチされた場所。

ただし、さらに、ファイル内の XML 要素の行番号を表示したいと考えています。どうやら、 cElementTree ツリーの XML 要素の行番号に関する情報は保存されません...:-(

質問: それを行うことができる同等の XML ライブラリはありますか?それとも、XML ファイル内の XML 要素の位置にアクセスする方法ですか?

ありがとう

役に立ちましたか?

解決

使用すべき同等のライブラリは次のとおりです。 lxml. 。lxml は、非常に高速な C ライブラリ libxml2 および libxslt のラッパーであり、一般に組み込みのものよりも優れていると考えられています。

幸いなことに、要素ツリー API を維持し、それを lxml.etree で拡張しようとします。

lxml.etree には、すべての要素のsourceline属性があり、これはまさにあなたが求めているものです。

それで elem.sourceline 上記のエラー メッセージは機能するはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top