无法在Windows上安装XML::LibXML模块
我试图使用无法在Windows上安装XML::LibXML模块,windows,perl,xpath,cpan,xml-libxml,Windows,Perl,Xpath,Cpan,Xml Libxml,我试图使用XPath提取一些HTML标记和数据,为此我需要使用XML::LibXML模块 我试着从CPANshell安装它,但它没有安装 我按照CPAN站点关于安装的说明进行了操作,在安装XML::LibXML之前,我们需要安装libxml2、iconv和zlib包装器,但没有成功 此外,如果有任何其他更简单的模块可以完成我的任务,请告诉我 当前的任务是: 我正在html页面上搜索一个特定的标记,它非常大(大约5000-10000)和标记。因此,我正在编写一个脚本,它匹配标记中的内容,并获取相应
XPath
提取一些HTML标记和数据,为此我需要使用XML::LibXML
模块
我试着从CPANshell安装它,但它没有安装
我按照CPAN站点关于安装的说明进行了操作,在安装XML::LibXML
之前,我们需要安装libxml2
、iconv
和zlib
包装器,但没有成功
此外,如果有任何其他更简单的模块可以完成我的任务,请告诉我
当前的任务是:
我正在html页面上搜索一个特定的
标记,它非常大(大约5000-10000)
和
标记。因此,我正在编写一个脚本,它匹配
标记中的内容,并获取相应(下一个)
标记中的内容
我希望我能说得更清楚一点。非常感谢您的帮助。如果您只需要XPath查询,那么我昨天刚刚编写了一个脚本,它使用XML::XPath::XMLParser对XML文件执行XPath查询 我已经用Activestate的perl安装和windows上的草莓perl对它进行了测试 我不记得必须去cpan安装任何模块(尽管我可能之前已经安装了,但我忘记了这么做:),所以也许您可以使用XML::XPath模块来代替 这是文档中的示例
use XML::XPath;
use XML::XPath::XMLParser;
my $xp = XML::XPath->new(filename => 'test.xhtml');
my $nodeset = $xp->find('/html/body/p'); # find all paragraphs
foreach my $node ($nodeset->get_nodelist) {
print "FOUND\n\n",
XML::XPath::XMLParser::as_string($node),
"\n\n";
}
如果您只需要XPath查询,那么我昨天刚刚编写了一个脚本,它使用XML::XPath::XMLParser对XML文件执行XPath查询 我已经用Activestate的perl安装和windows上的草莓perl对它进行了测试 我不记得必须去cpan安装任何模块(尽管我可能之前已经安装了,但我忘记了这么做:),所以也许您可以使用XML::XPath模块来代替 这是文档中的示例
use XML::XPath;
use XML::XPath::XMLParser;
my $xp = XML::XPath->new(filename => 'test.xhtml');
my $nodeset = $xp->find('/html/body/p'); # find all paragraphs
foreach my $node ($nodeset->get_nodelist) {
print "FOUND\n\n",
XML::XPath::XMLParser::as_string($node),
"\n\n";
}
假设您使用的是ActiveState Perl,那么就可以正常工作了。 您可以从中获取XML::LibXML,也可以从中获取libxslt/LibXML等 我只是先安装libxml,然后使用ppm安装XML::libxml。很好用
如果您正在使用,CPAN应该可以为您工作,因为我相信libxml2等都是草莓Perl发行版的一部分。假设您使用的是ActiveState Perl,您可以正常工作。 您可以从中获取XML::LibXML,也可以从中获取libxslt/LibXML等 我只是先安装libxml,然后使用ppm安装XML::libxml。很好用
如果您正在使用,CPAN应该可以为您工作,因为我相信libxml2等都是草莓Perl发行版的一部分。如果您正在使用ActiveState Perl,您应该将在中列出的存储库添加到
ppm
,然后使用
ppm install XML::LibXML
ppm安装XML::LibXML
试图将HTML解析为XML通常不是一项令人愉快的任务。我认为他更适合这项任务
#!/usr/bin/perl
use strict;
use warnings;
use HTML::TokeParser;
my $p = HTML::TokeParser->new(\*DATA);
my @definitions;
while ( my $dl_tag = $p->get_tag('dl') ) {
while ( my $dt_tag = $p->get_tag('dt') ) {
my $term = $p->get_trimmed_text('/dt');
my $dd_tag = $p->get_tag('dd');
my $defn = $p->get_trimmed_text('/dd');
push @definitions, [$term, $defn];
}
}
use Data::Dumper;
print Dumper \@definitions;
__DATA__
<dl>
<dt>One</dt>
<dd>1</dd>
<dt>Two</dt>
<dd>2</dd>
</dl>
#/usr/bin/perl
严格使用;
使用警告;
使用HTML::语法分析器;
my$p=HTML::TokeParser->new(\*数据);
我的定义;
while(my$dl_tag=$p->get_tag('dl')){
while(my$dt_tag=$p->get_tag('dt')){
my$term=$p->get_trimmed_text('/dt');
我的$dd_标签=$p->get_标签('dd');
my$defn=$p->get_trimmed_text('/dd');
push@definitions,[$term,$defn];
}
}
使用数据::转储程序;
打印转储文件\@定义;
__资料__
一个
1.
两个
2.
输出:
$VAR1 = [
[
'One',
'1'
],
[
'Two',
'2'
]
];
$VAR1=[
[
"一",,
'1'
],
[
“两个”,
'2'
]
];
如果您使用的是ActiveState Perl,则应将中列出的存储库添加到
ppm
,然后使用
ppm install XML::LibXML
ppm安装XML::LibXML
试图将HTML解析为XML通常不是一项令人愉快的任务。我认为他更适合这项任务
#!/usr/bin/perl
use strict;
use warnings;
use HTML::TokeParser;
my $p = HTML::TokeParser->new(\*DATA);
my @definitions;
while ( my $dl_tag = $p->get_tag('dl') ) {
while ( my $dt_tag = $p->get_tag('dt') ) {
my $term = $p->get_trimmed_text('/dt');
my $dd_tag = $p->get_tag('dd');
my $defn = $p->get_trimmed_text('/dd');
push @definitions, [$term, $defn];
}
}
use Data::Dumper;
print Dumper \@definitions;
__DATA__
<dl>
<dt>One</dt>
<dd>1</dd>
<dt>Two</dt>
<dd>2</dd>
</dl>
#/usr/bin/perl
严格使用;
使用警告;
使用HTML::语法分析器;
my$p=HTML::TokeParser->new(\*数据);
我的定义;
while(my$dl_tag=$p->get_tag('dl')){
while(my$dt_tag=$p->get_tag('dt')){
my$term=$p->get_trimmed_text('/dt');
我的$dd_标签=$p->get_标签('dd');
my$defn=$p->get_trimmed_text('/dd');
push@definitions,[$term,$defn];
}
}
使用数据::转储程序;
打印转储文件\@定义;
__资料__
一个
1.
两个
2.
输出:
$VAR1 = [
[
'One',
'1'
],
[
'Two',
'2'
]
];
$VAR1=[
[
"一",,
'1'
],
[
“两个”,
'2'
]
];
也可以在帖子中看到我的帖子
讨论使用PPM安装XML LibXML时遇到的一些问题/解决方案。另请参阅我在线程中的文章
讨论使用PPM安装XML LibXML时遇到的一些问题/解决方案。我们需要更多详细信息。您从CPANshell安装中得到的错误是什么?您能告诉我们您是如何尝试安装它的吗?ActivePerl还是草莓Perl?哪个版本?我们需要更多细节。您从CPANshell安装中得到的错误是什么?您能告诉我们您是如何尝试安装它的吗?ActivePerl还是草莓Perl?哪个版本?由于您不太可能使用Win32版本的libxml2、iconv和zlib(尽管它们存在,请参见示例)来处理XML::LibXml模块,因此我认为chollida的方法听起来更好。@ewall-给出一些上下文。chollida的方法比什么好?因为不太可能使用Win32版本的libxml2、iconv和zlib(尽管它们存在,请参见示例)来处理XML::LibXml模块,所以我认为chollida的方法听起来更好。@ewall-给出一些上下文。乔利达的方法比什么好?