【发布时间】:2010-09-05 15:59:31
【问题描述】:
目前,我正在使用 XML::LibXML perl 模块来根据定义的 XML 模式验证 XML 文件。目前,如果我的 XML 文件无法针对定义的 XML Schema 成功验证,我将收到一个错误列表,通知我,例如某些元素不是预期的,然后是预期的。在我的 XML 文件中,我将有许多相同名称的元素,但它们可能嵌套在 XML 文件的不同位置。
我的问题是,在尝试执行验证时,我是否可以输出任何可能出错的元素的 XPath 位置?
目前,我的 XML 文件很大,当验证失败时很难“调试”它,因为错误中显示的元素名称可能在 XML 文件的各个位置多次出现。
下面是我的代码,用于使用 LibXML 根据架构验证 XML 文件。
#!/usr/bin/perl
use strict;
use warnings;
use XML::LibXML;
my $schema_file = 'MySchema.xml';
my $document = 'MyFile.xml';
my $schema = XML::LibXML::Schema->new(location => $schema_file);
my $parser = XML::LibXML->new;
my $doc = $parser->parse_file($document);
eval { $schema->validate($doc) };
die $@ if $@;
print "$document validated successfully\n";
【问题讨论】:
标签: xml perl validation libxml2