【发布时间】:2012-10-05 04:22:37
【问题描述】:
我有一个使用XML::Simple 解析一些XML 的程序。在某些时候,XML 中似乎有多余的条目,这些条目会被序列化,但我一生都无法弄清楚如何将这些数据作为简单的字符串取回。这个 XML 的一个子集似乎被XML::Simple 放入一个数组中。运行 Dumper($data) 时的相关小节如下,其中数据是我解析的 XML。
Audio = [
{
'AudioIndex' => {
'StartByteOffset' => '32768',
'DataSize' => '3071872'
},
'SamplingRate' => '48000',
'BitsPerSample' => '16',
'AudioFormat' => 'MXF'
},
{
'AudioIndex' => {
'StartByteOffset' => '32768',
'DataSize' => '3071872'
},
'SamplingRate' => '48000',
'BitsPerSample' => '16',
'AudioFormat' => 'MXF'
},
{
'AudioIndex' => {
'StartByteOffset' => '32768',
'DataSize' => '3071872'
},
'SamplingRate' => '48000',
'BitsPerSample' => '16',
'AudioFormat' => 'MXF'
},
{
'AudioIndex' => {
'StartByteOffset' => '32768',
'DataSize' => '3071872'
},
'SamplingRate' => '48000',
'BitsPerSample' => '16',
'AudioFormat' => 'MXF'
}
];
我将我的 XML 解析输出的一小部分传递给一个变量,如下所示:
my @audiostuff = $data->{ClipContent}->{EssenceList}->{Audio};
当我输出这个转储时,我得到以下内容
$VAR1 = [
{
'AudioIndex' => {
'StartByteOffset' => '32768',
'DataSize' => '3071872'
},
'SamplingRate' => '48000',
'BitsPerSample' => '16',
'AudioFormat' => 'MXF'
},
{
'AudioIndex' => {
'StartByteOffset' => '32768',
'DataSize' => '3071872'
},
'SamplingRate' => '48000',
'BitsPerSample' => '16',
'AudioFormat' => 'MXF'
},
{
'AudioIndex' => {
'StartByteOffset' => '32768',
'DataSize' => '3071872'
},
'SamplingRate' => '48000',
'BitsPerSample' => '16',
'AudioFormat' => 'MXF'
},
{
'AudioIndex' => {
'StartByteOffset' => '32768',
'DataSize' => '3071872'
},
'SamplingRate' => '48000',
'BitsPerSample' => '16',
'AudioFormat' => 'MXF'
}
];
所以在捕获的数组中似乎一切正常。该数组似乎有一个元素,并且在该元素内有四个散列。这就是我卡住的地方。我不知道如何将这些散列中的信息再次取出。我已经尝试了大约 40 种不同的东西,但我只是用头撞墙。我很想将每个散列的值传递给一个简单的本地数组(例如@samplingrate),其中我有所有这四个条目,并且可以通过$samplingrate[0]等简单地引用它们。
任何帮助将不胜感激。
【问题讨论】:
-
我很困惑,你从来没有在你的例子中提到过@samplingrate。我猜,但你在寻找 $samplingrate->[0] 吗?
-
如果您查看数据输出,SamplingRate 实际上位于数组内部的每个散列中(至少在我正在阅读的时候)。我以 SamplingRate 为例,但我希望能够访问任何数据值。
标签: arrays perl hash data-dumper