无法在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-给出一些上下文。乔利达的方法比什么好?