アプリ版:「スタンプのみでお礼する」機能のリリースについて

エラーがでて期待する出力が出ず困っています。

ファイル名とXPathのコマンドライン引数をとり、
指定されたパスに一致するノードを出力するものです。
(参考書の写しなので、記述ミスはないと思います。)

■grabber.pl
use XML::XPath;
use XML::XPath::XMLParser;
my $xpath = XML::XPath->new( filename => shift @ARGV );
my $nodeset = $xpath->find( shift @ARGV );
foreach my $node ( nodeset->get_nodelist ) {
print XML::XPath::XMLParser::as_string( $node ) . "\n";
}

コマンドラインに入力しているものは、
perl grabber.pl data.xml "/inventory/category/item/name"

■data.xml
<?xml version="1.0"?>
<inventory date="2001">
<category>
<item id="2">
<name>aaaa</name>
</item>
</category>
</inventory>
です。

perl grabber.pl data.xml "/inventory/category/item/name"
としても、下記にエラーが出ます。
Can't locate object method "get_nodelist" via package "nodeset" (perhaps you for
got to load "nodeset"?) at grabber.pl line 5.

いろいろ試してみたり調べたのですが、
行き詰ってしまいました。
期待する出力は"<name>aaaa</name>"なのですが・・・

どなたかこのエラーの原因がおわかりになるかた
いらっしゃいますでしょうか。

環境は以下になります。
・windowsxp
・activePerl
モジュールのインストール済み
・XML-XPath
・XML-Parser

以上です。

A 回答 (2件)

コマンドラインのパラメータをshift @ARGV で渡してるので



perl grabber.pl data.xml "/inventory/category/item/name"
              ↓
perl grabber.pl data.xml /inventory/category/item/name

でどうでしょうか?

この回答への補足

ご回答ありがとうございます。
試してみたんですが、まったく同じエラーがでてしまったようです。
なにがまちがっているのでしょうか・・・・

補足日時:2007/04/16 14:33
    • good
    • 0

XML::XPath モジュールを使ったことがないので詳しいことはわかりません。


コードを一見したところ、

foreach my $node ( nodeset->get_nodelist ) {

は、

foreach my $node ( $nodeset->get_nodelist ) {

ではないかと思うのですが....?
    • good
    • 0
この回答へのお礼

できました!!!
ありがとうございます。

参考書がまちがっているなんてあるんですね・・・
疑いもしませんでした。。

今後は一字一句確認したいと思います。
本当にありがとうございました!

お礼日時:2007/04/17 20:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!