私は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」を返します。