Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 使用XML::LibXML打印输出_Perl_Xpath_Xml Libxml - Fatal编程技术网

Perl 使用XML::LibXML打印输出

Perl 使用XML::LibXML打印输出,perl,xpath,xml-libxml,Perl,Xpath,Xml Libxml,有人能解释一下为什么print会像这样打印$name属性值吗?当我对几乎相同的代码使用函数getAttribute时,为什么打印正常?getAttribute返回属性,而firstChild返回文本节点、元素、处理指令或注释 您看到的是一种打印对象的普通Perl方式:它打印对象的类和地址。您的版本似乎有点过时,最新版本的字符串化和代码生成了实际的文本节点 my $doc = $parser->parse_string( $res->content ); my $root = $doc

有人能解释一下为什么print会像这样打印
$name
属性值吗?当我对几乎相同的代码使用函数
getAttribute
时,为什么打印正常?

getAttribute
返回属性,而
firstChild
返回文本节点、元素、处理指令或注释

您看到的是一种打印对象的普通Perl方式:它打印对象的类和地址。您的版本似乎有点过时,最新版本的字符串化和代码生成了实际的文本节点

my $doc = $parser->parse_string( $res->content );
my $root = $doc->getDocumentElement;
my @objects = $root->getElementsByTagName('OBJECT');

foreach my $object ( @objects ){
my $name = $object->firstChild;
print "OBJECT = " . $name . "\n";}


OUTPUT is:
OBJECT = XML::LibXML::Text=SCALAR(0x262e170)
OBJECT = XML::LibXML::Text=SCALAR(0x2ee4b00)
OBJECT = XML::LibXML::Text=SCALAR(0x262e170)
OBJECT = XML::LibXML::Text=SCALAR(0x2ee4b00)
在旧版本中,需要调用
nodeValue
data
方法

OBJECT = hello

您能显示XML吗?您运行的是哪个版本的
XML::LibXML
?我怀疑您正在查找某个子元素,但忽略了也可能有带空格的子文本节点。因此,请展示一个XML输入示例,并解释您要查找的数据。
OBJECT = hello
print 'OBJECT = ', $object->firstChild->data, "\n";