Perl XMLIn Parser Error - 过早结束数据问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Perl XMLIn Parser Error - 过早结束数据问题相关的知识,希望对你有一定的参考价值。
我是Perl和XML的新手,所以请耐心等待我。
我的XMLIn随机地不喜欢返回的XML文件,即使我打开两个不同的XML返回文件它们是相同的。
我想出了这个解决方案:
#Send HTTP Request
my $browser = LWP::UserAgent->new();
my $req = HTTP::Request->new(POST => $endpointurl);
$req->content("@XML");
#Get HTTP Response Status
my $resp = $browser->request($req);
#Get Response Status
my $parser = XML::LibXML::Simple->new();
my $xmlResp = ();
$xmlResp = eval { $parser->XMLin($resp->content()) };
unless ($xmlResp)
{
$xmlResp = eval { $parser->XMLin($resp->content()) };
}
但是我不确定这是不是“好的做法”,或者如果它失败将是什么更好的方式让它循环返回。
这似乎有效,但我知道这并不能使它“正确”。
***这部分代码是由UPS提供的,我没有写,我也不是100%理解它。
如果请求不成功,$resp->content包含错误消息,该消息不是有效的XML。如果程序是永久性错误,程序应该停止,如果是暂时性错误则重试,并且仅在成功时解析内容。
use LWP::UserAgent::Determined qw();
my $browser = LWP::UserAgent::Determined->new;
...
my $resp = $browser->request($req);
if ($resp->is_success) {
my $parser = ... etc. etc.
} else {
die sprintf "could not POST to <%s>:
Status %s
%s
"
$endpointurl, $resp->status_line, $resp->content;
}
以上是关于Perl XMLIn Parser Error - 过早结束数据问题的主要内容,如果未能解决你的问题,请参考以下文章
windows7 cygwin perl XML::Parser libexpat*:安装失败
Perl MIME::Tools - CRLF 更改为 LF
运行PHP-Parser报错:PHP Fatal error: Uncaught Error: Class ‘PhpParserParserFactory‘ not found
如果在 perl 中解析大型 xlsx 文件,则处理异常 [关闭]
npm run dev报错--Error: Cannot find module 'yargs-parser'
XML Parser Errors See Details for more Information XML Parser Error on line 1: Document root ele