gpt4 book ai didi

xml - 处理 xml 解析器错误

转载 作者:数据小太阳 更新时间:2023-10-29 02:56:22 25 4
gpt4 key购买 nike

我有很多 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 successfully\n";
}
}

这种方法应该适用于 Perl 中的大多数 XML 解析器,因此只是说明性的。根据设计和规范,损坏的 XML 应该是 fatal error 。

关于xml - 处理 xml 解析器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33568767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com