gpt4 book ai didi

perl - 使用XML::LibXML打印输出

转载 作者:行者123 更新时间:2023-12-03 17:11:24 28 4
gpt4 key购买 nike

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)


谁能解释为什么print打印出这样的 $name属性值?当我在几乎相同的代码中使用功能 getAttribute时,为什么打印正常?

最佳答案

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

您看到的是Perl打印对象的常规方法:它打印其类和地址。您的XML::LibXML版本似乎有点陈旧,最近的版本overload是字符串化,并且代码产生了实际的文本节点。

#!/usr/bin/perl
use warnings;
use strict;

use XML::LibXML;

my $doc = 'XML::LibXML'->load_xml( string => << '__XML__');
<root>
<OBJECT name="o1">hello</OBJECT>
</root>
__XML__

my @objects = $doc->getElementsByTagName('OBJECT');

for my $object (@objects) {
print 'OBJECT = ', $object->firstChild, "\n";
}


输出:

OBJECT = hello


在旧版本中,需要调用 nodeValuedata方法。

print 'OBJECT = ', $object->firstChild->data, "\n";

关于perl - 使用XML::LibXML打印输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34896890/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com