cElementTreeを使用してPythonでXMLファイルを解析します。ファイル内のエラーと行番号の処理
-
12-09-2019 - |
質問
私が使用しているのは、 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
上記のエラー メッセージは機能するはずです。
所属していません StackOverflow