Windows上でXML :: libxmlのモジュールをインストールすることはできません

StackOverflow https://stackoverflow.com/questions/1337088

質問

私はいくつかのHTMLタグとデータを抽出するためにXPathを使用しようとしていますし、そのために私はXML::LibXMLモジュールを使用する必要があります。

私はCPANシェルからそれをインストールしようとしたが、それはインストールされません。

私たちはlibxml2をインストールする前にiconvzlibXML::LibXMLラッパーをインストールする必要があり、それがうまくいかなかったことを、インストールに関するCPANサイトからの指示に従いました。

私のタスクが行われます、他のシンプルなモジュールがある場合は、

また、私に教えてくださいます。

手元のタスクます:

私は本当に大きなされたHTMLページ上の特定の<dd>タグを探しています(5000周り - 10000)<dd><dt>タグ。だから、私は<dd>タグ内のコンテンツと一致し、対応する(次の)<dt>タグ内のコンテンツをフェッチするスクリプトを書いています。

私はもう少し明確になっていることがしたいです。すべてのヘルプは大歓迎されます。

役に立ちましたか?

解決

あなたはActiveStateのPerlを使用している場合は、

、あなたは ActivePerlの10XXのWin32 PPMパッケージに記載されているリポジトリを追加する必要があります。 ppmし、

ppm install XML::LibXML

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クエリを実行するためにXMLを使用するスクリプト昨日:: XPathの:: XMLParserのを書いています。

私は両方の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のに取得することができますうまく働きます。 あなたはランディKobes'サイトのnoreferrer"> zlatkovic.comする

私はちょうど最初のlibxmlをインストールしてから、XML ::のlibxmlをインストールするには、PPMを使用しています。だけで正常に動作します。

あなたはイチゴのPerl を使用している場合は、

は、CPANはなど、libxml2のようあなたのために働くイチゴの一部である必要がありますPerl配布私は信じています。

また、私はActivePerlのためにXML ::のlibxmlをインストールするにはどうすればよいのスレッドのに私のポストを参照してくださいですかます。

私はPPMを使用してXML-のlibxmlをインストール遭遇したいくつかの問題/ソリューションについて説明します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top