当前位置:  开发笔记 > 编程语言 > 正文

以数组形式访问返回的值

如何解决《以数组形式访问返回的值》经验,为你挑选了1个好方法。

我有简单的XML,我想在Perl中读取并生成包含所有读取键的哈希.

考虑以下代码:

my $content = $xml->XMLin("filesmap.xml")->{Item};
my %files = map { $_->{Path} => 1 } @$content;

当XML文件包含许多Item标记时,此代码段非常有用.然后$content是对数组的引用.但是当只有一个时,Item我在解除引用为数组时会出错.我的假设是$content对标量的引用,而不是数组.

确保从XML读取数组值的做法是什么?



1> Sobrique..:

你需要的是不使用XML::Simple,然后它真的是微不足道的.我最喜欢的相当简单的XML示例是XML::Twig

use XML::Twig;
my $twig = XML::Twig -> new -> parsefile ( 'filesmap.xml' ); 

my @files = map { $_ -> trimmed_text } $twig -> get_xpath ( '//Path' ); 

通过更详细的XML示例(以及期望的结果),我将能够为您提供更好的答案.

部分问题XML::Simple是它试图将XML数据结构转换为perl数据结构,并且 - 因为哈希是键值和无序但数组是有序的,它必须猜测.有时它做错了,有时则不一致.

如果您希望它保持一致,您可以设置:

my $xml = XMLin( "filesmap.xml", ForceArray => 1, KeyAttr => [], ForceContent => 1 );

但实际上 - XML::Simple只是一条痛苦的途径.不要使用它.如果您不喜欢XML::Twig,请尝试XML::LibXML改为.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有