免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發新帖
查看: 52639 | 回復: 4
打印 上一主題 下一主題

如何把ARRAY(0x501ca8)中的數據打印出來 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發表于 2017-07-04 17:36 |只看該作者 |倒序瀏覽
本帖最后由 hztj2005 于 2017-07-04 20:43 編輯
  1. use Test;

  2. use XML::XPath;

  3. my $xp = XML::XPath->new(filename => 'customer_order.xml');

  4. my @nodes = $xp->findnodes('/order');

  5. my $ref1= @nodes[0];

  6. print  ${$ref1}."\n";
復制代碼


執行上面代碼,輸出一個數組的地址,我希望把其中的數據print出來,該如何操作?

D:\Strawberry\plcd>perl order.pl

XML::XPath::Node::ElementImpl=ARRAY(0x501ca8)

就是把ARRAY(0x501ca8)中的數據打印出來。

下面是customer_order.xml文件

  1. <?xml version="1.0" standalone="yes"?>
  2. <order>
  3. <customer>
  4.   <name>Coyote, Ltd.</name>
  5.   <shipping_info>
  6.     <address>1313 Desert Road</address>
  7.     <city>Nowheresville</city>
  8.     <state>AZ</state>
  9.     <zip>90210</zip>
  10.   </shipping_info>
  11. </customer>
  12. <item>
  13.   <product id="1111">Acme Rocket Jet Pack</product>
  14.   <quantity type="each">1</quantity>
  15. </item>
  16. <item>
  17.   <product id="2222">Roadrunner Chow</product>
  18.   <quantity type="bag">10</quantity>
  19. </item>
  20. </order>
復制代碼



論壇徽章:
145
技術圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
2 [報告]
發表于 2017-07-04 19:02 |只看該作者
回復 1# hztj2005

try this ?

my $ref1 = $nodes[0];
print $ref1->toString, "\n";

評分

參與人數 1信譽積分 +10 收起 理由
hztj2005 + 10 很給力!

查看全部評分

論壇徽章:
0
3 [報告]
發表于 2017-07-05 10:49 |只看該作者
這個要掌握方法,打出來是對象的名字和地址 XML::XPath::Node::ElementImpl=ARRAY(0x501ca,  XML::XPath::Node::Element 是包名

然后我們需要去官方文檔看

https://metacpan.org/release/XML-XPath

https://metacpan.org/pod/XML::XPath::Node::Element

論壇徽章:
0
4 [報告]
發表于 2017-07-05 12:26 |只看該作者
quanpai 發表于 2017-07-05 10:49
這個要掌握方法,打出來是對象的名字和地址 XML::XPath::Node::ElementImpl=ARRAY(0x501ca,  XML::XPath ...


謝謝!上面有解說,要是給出例子就更直觀了。
toString ( [ norecurse ] )
Output (and all children) the node to a string. Doesn't process children if the norecurse option is a true value.

  1. sub toString {
  2.     my ($self, $norecurse) = @_;

  3.     my $string = '';
  4.     if (! $self->[node_name] ) {
  5.         # root node
  6.         return join('', map { $_->toString($norecurse) } @{$self->[node_children]});
  7.     }

  8.     $string .= "<" . $self->[node_name];
  9.     $string .= join('', map { $_->toString } @{$self->[node_namespaces]});
  10.     $string .= join('', map { $_->toString } @{$self->[node_attribs]});

  11.     if (@{$self->[node_children]}) {
  12.         $string .= ">";

  13.         if (!$norecurse) {
  14.             $string .= join('', map { $_->toString($norecurse) } @{$self->[node_children]});
  15.         }

  16.         $string .= "</" . $self->[node_name] . ">";
  17.     }
  18.     else {
  19.         $string .= " />";
  20.     }

  21.     return $string;
  22. }
復制代碼


求職 : 軟件工程師
論壇徽章:
3
程序設計版塊每日發帖之星
日期:2015-10-07 06:20:00程序設計版塊每日發帖之星
日期:2015-12-13 06:20:00程序設計版塊每日發帖之星
日期:2016-05-05 06:20:00
5 [報告]
發表于 2018-11-12 07:39 |只看該作者
打印引用,直接用 YAML 模塊的 Dump, 或者是 JSON 模塊的 encode_json:

  1. use YAML qw(Dump);
  2. use JSON qw(encode_json);

  3. # my $ref ....
  4. print Dump($ref);
  5. print encode_json($ref);
復制代碼
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規則 發表回復

  

北京盛拓優訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網監中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區
中國互聯網協會會員  聯系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP
   日韩综合区视频第一页导航,无码JK粉嫩小泬在线观看,午夜精品A片一区二区三区,日日躁夜夜躁狠狠躁麻豆,大胆国模,免费观看无遮挡www的网站