- 締切済み
Perlを用いて、XMLファイルの中のキーワードの個数を数えるプログラ
Perlを用いて、XMLファイルの中のキーワードの個数を数えるプログラムを組もうと思っています。 次のようなXMLの中の<keyword>のタグに囲まれた文字列を数えるプログラムです。 <?xml version="1.0" encoding="UTF-8"?> <grant_award_list> <grant_award id="1001"> <title>タイトル1</title> <keywords><keyword>A</keyword><keyword>B</keyword></keywords> </grant_award> <grant_award id="1002"> <title>タイトル2</title> <keywords><keyword>B</keyword></keywords> </grant_award> </grant_award_list> このようなときに、次のようにキーワードとその出現回数が記載されたXMLファイルにしたいと考えています。 <?xml version="1.0" encoding="UTF-8"?> <keywords> <keyword>A</keyword> <count>1</count> </keywords> <keywords> <keyword>B</keyword> <count>2</count> </keywords> 具体的なプログラムのコードを教えてください。よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- hiroki_kana
- ベストアンサー率0% (0/0)
正規表現でマッチさせて取ってくるのが追加モジュールなしに動かせるので手軽だと思います。 走り書きですが、下記のような感じで…。 下記コードでは/tmp/hogeに上記のXMLファイルがあることを前提にしています。 #!/usr/bin/perl use strict; open F, "/tmp/hoge"; my @str_array = <F>; my $str = join "", @str_array; my @match = $str =~ m/<keyword>(.*?)<\/keyword>/g; my $hash = {}; foreach (@match) { $hash->{$_}++; } use Data::Dumper; print Dumper($hash); close F; ハッシュキーにキーワード、ハッシュの値にキーワード出現数が入ってるのでそれをもとにprintすると良いと思います。 上記では、ひとまず構造がわかりやすいようにDumperでdumpしています。 その他XML::Simpleなどのモジュールを使っても実装できるかと思います。