0

私はxmlを解析し、xsdファイルに対して検証するためにlibxml2 pythonを使用しています。

スキーマ検証エラーが発生したときに、xml ファイルでエラーの行番号を見つけることができませんでした。

方法はありますか?

理解を深めるために、以下にコードを貼り付けました。

ctxt = libxml2.schemaNewParserCtxt("xsd1.xsd")

schema = ctxt.schemaParse()

del ctxt

validationCtxt = schema.schemaNewValidCtxt()

doc = libxml2.parseFile("myxml.xml")
iErrA1 = validationCtxt.schemaValidateDoc(doc)

#get the line number if there is error

アップデート:

libxml2.lineNumbersDefault(1) を試しました。これにより、ライブラリが行番号を収集できるようになる可能性があります。次に、validationCtxt.setValidityErrorHandler(ErrorHandler, ErrorHandler) を通じてコールバックを登録します。メッセージ部分は取得できますが、行番号がありません。詳細情報: xmlError で行番号メンバーを見たことがありますが、エラーが発生したときにこの xmlError 型オブジェクトを取得する方法がわかりません。また、xmlError 型のオブジェクトを返すグローバル関数 lastError もありますが、エラーがあっても常に「none」を返します。

4

0 に答える 0