Perl 使用XML::LibXML打印输出
有人能解释一下为什么print会像这样打印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
$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";