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
コメント