Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自LWP HTTPS数据的Perl LibXML解析定标器_Xml_Perl_Https_Lwp Useragent_Xml Libxml - Fatal编程技术网

来自LWP HTTPS数据的Perl LibXML解析定标器

来自LWP HTTPS数据的Perl LibXML解析定标器,xml,perl,https,lwp-useragent,xml-libxml,Xml,Perl,Https,Lwp Useragent,Xml Libxml,我正在尝试从一个HTTPS网站获取文本。我已经用LWP完成了这项工作,但是我需要解析信息,因为它是XML。我想我已经找到了如何使用XML::LibXML做我想做的事情,但是我无法使用它从LWP::UserAgent访问数据 这是我的代码: #! usr/bin/perl use strict; use warnings; use LWP::UserAgent; use open qw(:std :utf8); use 5.014; use IO::Socket::SSL qw(); use XM

我正在尝试从一个HTTPS网站获取文本。我已经用LWP完成了这项工作,但是我需要解析信息,因为它是XML。我想我已经找到了如何使用XML::LibXML做我想做的事情,但是我无法使用它从LWP::UserAgent访问数据

这是我的代码:

#! usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use open qw(:std :utf8);
use 5.014;
use IO::Socket::SSL qw();
use XML::LibXML;

BEGIN {
    $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
    $ENV{HTTPS_DEBUG} = 1;
}

my $ua = LWP::UserAgent->new(ssl_opts => {
    SSL_verify_mode => IO::Socket::SSL::SSL_VERIFY_NONE,
    verify_hostname => 0, 
});

my $response = $ua->get('https:<mywebsite>');

my $t = '';

if ( $response->is_success ) {
    $t = $response->decoded_content;
}
else {
    die $response->status_line;
}


my $parser = XML::->new();
my $xmldoc = $parser->parse_file($t);

print $xmldoc;
非常感谢您的帮助。

请阅读文档,您将看到调用它的其他表单

use XML::LibXML;
my $dom = XML::LibXML->load_xml(string => $t);

如果查看文档,您将看到load_xml的位置选项可以是文件路径或URL。因此,根本没有必要直接涉及LWP;你可以直接写

my $xmldoc = XML::LibXML->load_xml(location => 'https:<mywebsite>');

那么解析器使用什么呢?我从来没有使用过XML::LibXML。我首选的xml解析模块适用于简单xml和其他所有内容。请不要鼓励使用xml::simple。作者在模块的文档中说,不鼓励在新代码中使用此模块。还提供了其他模块,它们提供了更直观和一致的接口。特别推荐使用XML::LibXML。Twig是一个很好的替代品,主要是因为它方便的API。@Borodin根据您的建议,我再次尝试学习XML::LibXML,总的来说,我仍然对它的文档风格感到失望。我从一家公司得到了更多的信息。至于XML::Simple不被鼓励,我同意维护人员的观点,即模块的选项会给它带来许多缺陷。我从不使用它来编写或编辑XML。然而,它仍然是一个有用的工具,因为入门的障碍只是理解perl数据结构。所以我仍然会对简单的xml使用它。$your_code=~s/parse_file/parse_string/@CircuitB0T:这可能是真的,尽管在模块的文档中没有提到。
my $xmldoc = XML::LibXML->load_xml(location => 'https:<mywebsite>');