パス名のリストを取得するために smil (xml) ファイルを解析しています。解析はうまくいき、巨大なリテラル オブジェクトに保存されます。
しかし、情報を取り戻そうとすると、次の情報しか得られません。
/home/pi/RaspberryPiTV-master/app.js:158
Playlist.push(smil.playlist.video[i].src);
^
TypeError: Cannot read property 'undefined' of undefined
at /home/pi/RaspberryPiTV-master/app.js:158:46
at /home/pi/RaspberryPiTV-master/app.js:321:39
at Object.oncomplete (fs.js:93:15)
コードは次のとおりです。
var smil={}, i=0;
Playlist=[];
parse("/home/pi/test.smil", function (parsed){
smil=parsed;
console.dir(util.inspect(smil, false, null));
do
{
Playlist.push(smil.playlist.video[i].src);
i=i+1;
}while(i<smil.playlist.video.length-1);
...
}
関数 parse (パス名、コールバック) は非常に巨大ですが、出力が機能するため機能します。
{
stream:
[
{ name: 'Stream1' }
],
playlist:
[
{ video:
[
{ src: 'L.mp4', start: '5', length: '5' },
{ src: 'SW.mp4', start: '50', length: '5' },
{ src: 'HN.mp4', start: '150', length: '5' }
],
name: 'pl1',
playOnStream: 'Stream1',
repeat: 'true',
scheduled: '2013-07-23 11:00:00'
}
]
}
何か不足していますか?印刷が正しく行われるため、なぜ未定義になるのかわかりません。