Получить значение узла с помощью модуля XML::XPath в Perl

Я использую приведенный ниже код для получения значения узла из 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. Пожалуйста, скажите мне, что я делаю неправильно.

6
задан cjm 12 April 2012 в 10:23
поделиться