XML::Simple
을 사용하여 XML을 구문 분석하는 프로그램이 있습니다. XML에 직렬화 된 중복 항목이있는 시점이 있습니다. 그러나 필자는이 데이터를 간단한 문자열로 다시 가져 오는 방법을 생각할 수 없습니다. XML::Simple
에 의해 배열에 삽입 된 것으로 보이는이 XML의 하위 집합이 있습니다. 해당 하위 섹션은 데이터가 구문 분석 된 XML 인 Dumper($data)
을 실행할 때 다음과 같습니다. Perl Data :: 배열 내부에 Dumper 해시가 있습니까?
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};
I 출력이의 덤프, 나는 다음과 같은받을 때
$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'
}
];
그래서 모두 캡처 한 배열에서 올바르게 보입니다. 배열은 하나의 요소를 갖고 있으며, 그 내부에는 4 개의 해시가 있습니다. 이것은 내가 붙어있는 곳이다. 이 해시의 정보를 다시 얻는 방법을 모르겠습니다. 나는 약 40 가지를 시도해 봤는데 벽에 머리를 두드렸다. 나는이 중 네 개의 모든 항목을 갖고 있으며 간단하게 $samplingrate[0]
등을 참조 할 수있는 간단한 로컬 배열 (예 : @samplingrate
과 같은)에 각 해시의 값을 전달하기 만하면됩니다.
Any 도움을 주시면 감사하겠습니다.
내가 혼란 스러워요, 당신이 이제까지 당신의 예에서 @samplingrate 언급하지 않는 액세스 할 수있는 방법이다. 나는 추측하고 있지만, 당신은 $ samplingrate -> [0]을 찾고 있습니까? –
데이터 출력을 살펴보면 SamplingRate는 실제로 어레이 내부에있는 각 해시 내부에 있습니다 (적어도 내가 읽었을 때). 예를 들어 SamplingRate를 사용했지만 데이터 값에 액세스 할 수 있기를 원합니다. – szumlins