2

ライブラリを使用して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 要素の位置にアクセスする方法はありますか?

ありがとう

4

1 に答える 1

4

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

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

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

したがってelem.sourceline、上記のエラーメッセージは機能するはずです。

于 2009-08-09T01:33:30.733 に答える