处理xml解析器错误



我有很多XML文件,我必须读取它们,然后查看它们是否有效。我有一些文件因为缺少结束标记而出现问题。现在我的任务是编写一个读取这些文件的代码,当存在无效文件时,只打印错误消息和文件名,然后转到下一个文件。

我是Perl和XML的新手。但如果我知道如何处理entag错误,那么我就可以休息了。我所知道的是,我在代码中有这样一行代码,读取XML文件,然后寻找解析。如果不正常,则会在命令行中产生错误。我的目标是有一个条件,然后我会写一条信息。

 use strict;
 use warnings;
 use XML::LibXML;
 use XML::Simple;
 use XML::LibXML::XPathContext qw( );
 use XML::Writer;
 # reads all file
 my @testFile = <*.xml>;
 my $arrSize = @testFile;
 XML::LibXML::XPathContext->new()
 my $doc = XML::LibXML->load_xml(location => $ver);
 my $name_ver = $xml->findnodes('/Info/Name',$doc);
 ##  do some other things

我希望这在某种程度上清楚我的意思。有人能告诉我如何写一个不允许代码停止的条件,而是转到另一行并打印消息吗。

将解析操作封装在eval中,并捕获$@

使用我更了解的库:

#!/usr/bin/env perl
use strict;
use warnings; 
use XML::Twig; 
foreach my $file ( glob "*.xml") {
     eval { XML::Twig -> new() -> parsefile ( $file ) }; 
     if ( $@ ) { 
          print "$file not valid XML: $@n"; 
     }
     else {
          print "$file parsed successfullyn";
     }
}

这种方法应该可以与Perl中的大多数XML解析器一起使用,因此只是说明性的。根据设计和规范,损坏的XML应该是一个致命的错误。

相关内容

  • 没有找到相关文章

最新更新