私はWindows7マシンでPerlを使ってコーディングしています。以下のXPathコードを使用してXMLからデータを抽出できます
use strict;
use warning;
use XML::LibXML;
my $parser = XML::LibXML->new();
my $doc = $parser->parse_file($newfile);
my $query = "/tradenet/message/header/unique_ref_no/date/text( )";
my($node) = $doc->findnodes($query);
$node->setData("$file_seq_number");
ただし、別のXMLで同じコードを使用すると、2番目のドキュメントのxpathは次のようになります。
/TradenetResponse/OutboundMessage/out:OutwardPermit/out:Declaration/out:Header/cac:UniqueReferenceNumber/cbc:SequenceNumeric
Perlコードと合わせて、抽出コードは次のようになります。
my $parser = XML::LibXML->new();
my $doc = $parser->parse_file($newfile);
my $query = "/TradenetResponse/OutboundMessage/out:OutwardPermit/out:Declaration/out:Header/cac:UniqueReferenceNumber/cbc:SequenceNumeric/text( )";
my($node) = $doc->findnodes($query);
$node->setData("$file_seq_number");
2番目のコードを使用すると、2番目のXMLからデータを取得できません。「Perl.plの5行目の未定義の値でメソッド「setData」を呼び出せません」というエラーが表示されます。
2番目のXPATHアドレスの「:」文字はコードに影響しますか?