目前,我正在使用XML :: LibXML perl模塊根據定義的XML模式驗證XML文件。目前,如果我的XML文件無法根據定義的XML Schema成功驗證,我會得到一個錯誤列表,通知我,例如某些元素不是預期的,然後是預期的。在我的XML文件中,我將擁有許多相同名稱的元素,但它們可能嵌套在XML文件的各個位置。使用LibXML驗證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 [email protected] if [email protected];
print "$document validated successfully\n";
如果你看看源XML ::驗證::的libxml,你會看到它不報告線和列當使用LibXML進行驗證時。您可能想要使用其他庫進行驗證。 – cjm 2010-09-05 16:33:16