我使用Perl解析xml文件,并且所有内容似乎都很适用于一个问题。我有具有相同模式的文件,但他们从解析器返回不同类型的数据。下面是一个简化的例子:Perl,使用XML解析XML :: Simple和存在问题
<tests>
<test>
<data1>Hi</data1>
<data2>Hello</data2>
</test>
<test>
<data1>Hi2</data1>
<data2>Hello2</data2>
</test>
</tests>
在转储中,该返回如下:(乘测试是两个散列阵列的注释)
$VAR1 = {
'test' => [
{
'data2' => 'Hello',
'data1' => 'Hi'
},
{
'data2' => 'Hello2',
'data1' => 'Hi2'
}
]
};
现在,对于一组类似的数据的,但只有一个“测试”实体,像这样:
<tests>
<test>
<data1>Hi</data1>
<data2>Hello</data2>
</test>
</tests>
这返回类似的数据,除了测试实体不再是一个数组,但奇异散列:
$VAR1 = {
'test' => {
'data2' => 'Hello',
'data1' => 'Hi'
}
};
我的两难处境是我的代码期望有一个数组,因为这是常态。但是,只有一个实体的机会很小,它会为该实体返回一个散列。我的问题是,我如何处理哈希实体,就像它是一个数组一样。或者测试它?
现在我的检索数组的代码是这样的:
foreach $test (@{$data->{'tests'}->{'test'}})
{
do something with $test
}
但是随着散列,它提供了一个错误“不是一个数组引用”。我希望这是足够的细节!谢谢!!!
谢谢!这对我来说非常合适! – srowley 2012-01-17 02:27:49