xml に似たgpxファイルを処理しています。そのファイルの抜粋は次のとおりです。
<trkpt lat="3.1398377" lon="101.6937661">
<ele>0.0</ele>
<time>2013-01-01T00:00:00.000Z</time>
<name>Position 1</name>
</trkpt>
<trkpt lat="3.1250538" lon="101.6783237">
<ele>0.0</ele>
<name>Position 460</name>
</trkpt>
ご覧のとおり、一部の<trkpt>
要素には要素が含まれており、一部の要素には含まれて<time>
いません。それを含まない要素に追加<time>
するにはどうすればよいですか?<trkpt>
ファイルの読み取り中に、XML ノードに以下が含まれていない場合、エラーが発生します<time>
。
foreach $points ( $root->getElementsByTagName('trkpt') ) {
my($lat) = $points->findvalue('@lat');
my($lon) = $pints->findvalue('@lon');
my($time) = $points->getElementsByTagName('time')->[0]->textContent();
my($pointName) = $points->getElementsByTagName('name')->[0]->textContent();
}
未定義の値でメソッド「textContent」を呼び出すことはできません...
どうすればそれをよりインテリジェントにすることができますか?つまり、 undefined が検出された場合$time
、<time>
が gpx ファイルに書き込まれ、エラーは発生しません。