人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

perlで
XML解析
以下のXMLファイルから
http://live-e.naist.jp/data/getLatestDataAll/
の中から、全ての
属性値:latitude、 longitudeを取得するプログラムを作成したいのですが、perl初心者で困っています。
どなたかプログラムを作成していただけないでしょうか。

●質問者: いまよ
●カテゴリ:コンピュータ
✍キーワード:Perl XML ファイル プログラム 作成
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● うぃんど
●70ポイント ベストアンサー

実行環境の指定が無いため汎用性の高いコマンドライン上で動くものを作成してみました。結果はcsv形式で標準出力にでてきます

動作確認はwindows上でのみ行っています。windows上で動かしたため文字コードはsjisを利用しています

Linuxなどで動かす場合は一行目のperlパスを適正なものに調整して、文字コードも必要に応じて調整してください

WEB出力が最終目的かもしれませんが、解析とは別問題となりますので別質問にしてくださいませ

(カンマで繋ぐのではなくHTMLタグを一緒に出力するようにして、httpヘッダを加えるだけですけどね。

一度に両方に対応するのは大変なので、今回はコマンドライン出力のみとしています。

質問の際には動作環境や最終出力形態も指定されると、双方ともに楽になりますので、以後よろしくです)

hoge.pl

#!/usr/bin/perl
use strict;
use warnings;
use LWP::Simple;
use Encode;
use XML::Simple;
my $readXML = XML::Simple -> new -> XMLin( get( 'http://live-e.naist.jp/data/getLatestDataAll/' ) );
my @data;
foreach my $key ( keys %{ $readXML->{ 'sensorGroup' } } ) {
 if ($key ne '') {
 print '"', encode( 'sjis', $key ), '"';
 print ',', $$readXML{ 'sensorGroup' }{ $key }{ 'latitude' };
 print ',', $$readXML{ 'sensorGroup' }{ $key }{ 'longitude' };
 print "\n";
 }
}

実行方法は下記のような具合

perl hoge.pl > hoge.csv

xml解析初心者の方に向けた。おまけです

上記のようなコードを書くためにはxmlの構造を調べなければならないので今回は下記のようなコードで事前調査しています

このように事前調査することでxmlの利用はかなり簡単になります。初心者で学習中の方はぜひご活用ください

#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use LWP::Simple;
use XML::Simple;
my $readXML = XML::Simple -> new -> XMLin( get( 'http://live-e.naist.jp/data/getLatestDataAll/' ) );
print Dumper($readXML);
◎質問者からの返答

ありがとうございました!

よくわかりました。

勉強を続けれそうです。

また、つまづいたときは、

よろしくお願い致します。


2 ● yamaneroom
●20ポイント

XML::Parserを使えばよい。

http://monpe.cliff.jp/computer/perl/perl_xml002.html

◎質問者からの返答

ありがとうございました。

xmlの解析モジュールにはいろいろあるんですね。

勉強になります。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ