如果 xml 文件的格式不正确,我的任务是更正它们的语法。目前我正在手动执行此任务。有什么方法可以验证XML
文件的语法,如果 XML 格式不正确,则将其更正为格式正确?
Perl
是否可以使用脚本进行验证和更正?
谢谢,
如果 xml 文件的格式不正确,我的任务是更正它们的语法。目前我正在手动执行此任务。有什么方法可以验证XML
文件的语法,如果 XML 格式不正确,则将其更正为格式正确?
Perl
是否可以使用脚本进行验证和更正?
谢谢,
XML::LibXML是一个验证解析器。您可以使用它来确定 XML 是否有效。
use XML::LibXML qw( );
my $parser = XML::LibXML->new();
if (eval { $parser->parse_file($qfn) }) {
print "ok\n";
} else {
print "error:\n$@";
}
自动更正 XML 是另一回事。如果不做大量假设,就不可能自动修复错误的 XML。例如,没有办法知道是否
<foo>/bar<baz/</foo>
本来是
<foo>/bar<baz/</foo>
或者
<foo>/bar<baz/></foo>
甚至是别的东西。
XML::LibXML 确实具有自动修复/忽略某些错误的选项。谁知道它是否做出与您相同的假设。采用
use XML::LibXML qw( );
my $parser = XML::LibXML->new( recover => $recover );
my $doc = $parser->parse_file($in_qfn);
$doc->toFile($out_qfn);
如果您希望解析器在解决问题时收到警告,请使用1
for 。如果您希望解析器静默解决问题,
请使用for 。
不管你用什么,如果遇到不可恢复的错误,它仍然会抛出异常。$recover
2
$recover
$recover
您可以尝试XML::Liberal:“解析损坏的 XML 的超级自由 XML 解析器”,看看它是否适合您。