我使用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