无法在Windows上安装XML ::的libxml模块
-
20-09-2019 - |
题
我想使用XPath
提取一些HTML标签和数据,对那些我需要使用XML::LibXML
模块。
我试图从CPAN壳安装它,但它不安装。
我跟着从CPAN网站有关安装说明,我们需要安装libxml2
之前安装iconv
,zlib
和XML::LibXML
包装和它没有工作了。
另外,如果是得到我的任务完成任何其他简单的模块,请让我知道。
当前的任务:
我正在寻找一个HTML页面上的特定<dd>
标签,它是真正的大(约5000 - 10000)<dd>
和<dt>
标签。所以,我写这<dd>
标签内的内容相匹配,并获取相应的(下一个)<dt>
标签内的内容的脚本。
我希望我能我已经多了几分清晰。任何帮助感激。
解决方案
如果您正在使用的ActiveState Perl中,你应该添加在的activeperl 10XX的Win32 PPM包列出的库一>到ppm
,然后使用
ppm install XML::LibXML
Trying,作为XML通常是不愉快的任务解析HTML。我认为 HTML :: TokeParser 是更适合的任务。
#!/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>
输出:
$VAR1 = [ [ 'One', '1' ], [ 'Two', '2' ] ];
其他提示
如果你只是想XPath查询然后我就写了一个脚本,昨天使用XML :: XPath的XMLParser的::上做一个XML文件XPath查询。
我已经与两个ActiveState的perl的安装,并与窗口草莓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的等从 zlatkovic.com
我刚安装的libxml第一,然后使用ppm至安装XML ::的libxml。工作得很好。
如果您使用的是草莓的Perl ,CPAN应该为你工作的libxml2的,等是草莓的一部分Perl发行相信
另请参阅我的文章在线程如何安装XML ::的libxml为的activeperl?。
讨论一些问题/解决方案,我遇到了使用PPM安装XML-的libxml。