以下のコードを使用して、XML ファイルからノードの値を取得しています。
use XML::XPath;
use XML::XPath::XMLParser;
my $pt1 = XML::XPath->new(filename => 'test1.xml');
my $nodeset = $pt1->find('/file1/table/tname');
foreach my $node ($nodeset->get_nodelist)
{
print $node->getNodeValue."\n";
}
「test1.xml」の内容は次のとおりです。
<file1>
<table>
<tname>_sys_ident</tname>
<ttype>regular</ttype>
<col>
<name>_sys_ident_asp</name>
<type>varchar(16)</type>
<fkey>_sys_asp</fkey>
<attr>PRIMARY KEY</attr>
</col>
</table>
</file1>
tname (つまり_sys_ident )の値を出力したい。しかし、上記のコードは何も印刷しません。
for ループ内で次を使用する場合:
print XML::XPath::XMLParser::as_string($node);
次に、次の出力が得られます。
<tname>_sys_ident_asp</tname>
この完全なノード名と値の文字列は必要ありません。ノード値が欲しいだけです。 XML と XPath を試すのはこれが初めてです。私が間違っていることを教えてください。