xml - Perl - 来自哈希结构的 XML 打印值
问题描述
下面的代码是我从中获得的 XML 结构的一部分XML::Simple
。
我得到很多classfield
( classfield_101
, classfield_1023
, ... ) 并且classfield_101
是其中之一。因为classfield_101
我希望程序打印'CHECK UNCHECK'
到控制台。
my (%ClassDetails) = ();
my %struct = (
'level1' => {
'classfield' => {
'classfield_101' => {
'classfieldvalues' => {
'classfieldvalue' => [
{'content' => 'CHECK', 'key' => '1254789'},
{'content' => 'UNCHECK', 'key' => '1987456'}
]
},
'classfieldname' => 'CHECKCLASS',
'key' => 'CHECKDETAILS'
},
}
},
);
print Dumper(\%struct);
for my $elem (@{$struct{level1}{classfield}{classfield_101}{classfieldvalues}{classfieldvalue}}) {
print "$elem->{content} ";
}
#Output
#CHECK UNCHECK
如何遍历每个classfield_id
输入%$classfield
并打印值?
foreach $classfield_id (keys %$classfield) {
## for ex: Looping for classfield_id = classfield_101 from %$classfield
if ( $classfield->{$classfield_id}->classfieldname eq "CHECKCLASS" ) {
### Stuck here --- $ClassDetails{checkuncheck} = How to print
}
}
解决方案
下面将打印您的整个哈希。您可以修改代码以打印您感兴趣的任何内容:
foreach my $key (keys %struct) {
print "$key\n";
foreach my $key2 (keys %{$struct{$key}}) {
print "-$key2\n";
foreach my $key3 (keys %{$struct{$key}->{$key2}}) {
print "--$key3\n";
foreach my $key4 (keys %{$struct{$key}->{$key2}->{$key3}}) {
my $ref = ref $struct{$key}->{$key2}->{$key3}->{$key4};
if($ref eq '') {
print "---$key4 = $struct{$key}->{$key2}->{$key3}->{$key4}\n";
}
else {
print "---$key4\n";
foreach my $key5 (keys %{$struct{$key}->{$key2}->{$key3}->{$key4}}) {
print "----$key5\n";
foreach my $key6 (@{$struct{$key}->{$key2}->{$key3}->{$key4}->{$key5}}) {
foreach my $key7 (keys %{$key6}) {
print "-----$key7 = $key6->{$key7}\n";
}
}
}
}
}
}
}
}
推荐阅读
- python - 函数可以是 Python 数据类成员吗?
- amazon-data-pipeline - AWS Data Pipeline:将 CSV 文件从 S3 上传到 DynamoDB
- swift - 为什么我在 Xcode 中的 pod init 期间收到加载错误?
- ios - Safari 未能使用 Angular 的 HttpClient 发送有效的 GET 请求
- javascript - 在 React 中传递数据的 Fetch/TemplateLiteral 问题
- flutter - Flutter 中的条子是否可以同时具有“扩展”和“收缩”效果?
- react-native - 如何从我的反应原生应用程序中删除“dropped s far”?
- vue.js - 如何在 nativescript vue 中制作反应数组?
- r - 我在 R 中安装 ConvergenceConcepts 包时遇到问题,它会抛出一条错误消息,指出“ConvergenceConcepts”的退出状态非零
- rust - 如何将所有权转移给调用函数?