perl XML::LibXML::SchemaのXML構造チェックでエラー行番の表示方法

XMLファイルの構造をチェックしてくれるperlモジュールXML::LibXML::Schema。
予め定義したxsdファイルに従い、XMLファイルの構造をチェックしてくれます。


大変便利なのですがデフォルト設定では、エラーとなったXMLファイルの行番号が0となってしまいます。

エラーメッセージ例)
file:///C:/xxx.xml:0: parser error : Extra content at the end of the document

エラー行番号を持たせるには XML::LibXML 生成時に、XML_LIBXML_LINENUMBERS オプションを使用します。



my $schema   = XML::LibXML::Schema->new(location => $xsd_file);
my $parser   = XML::LibXML->new(XML_LIBXML_LINENUMBERS => 1 );

my $tree = $parser->parse_file($xml_file);
eval { $schema->validate($tree) };
if ( $@ ) {
#エラー処理
}


これでエラーとなったXMLファイルの行番号が表示されるようになります。

エラーメッセージ例)
file:///C:/xxx.xml:954: parser error : Extra content at the end of the document
 

コメント

タイトルとURLをコピーしました