perlで、簡単なXMLタグパーサを作ってみた

構造も理解しない、タグも1種類前提、ただ囲んであるタグの値を取得するだけ。サンプルではxmlファイルを読んでいるけど、ウェブサービスAPIで取得してきたXMLっぽい単品データを変数にして処理するのにも使えたりします。

#!/usr/bin/perl

use strict;
use warnings;
my $filename = 'file.xml';

#<foo></foo>の値
print parse("foo", "$filename");

#<bar></bar>の値
print parse("bar", "$filename");

#タグ名の引数の値を返す関数
sub parse{
my $tagname = shift;
my $filename = shift;

open (XML, "< $filename") or die "file open error.\n";
for(<XML>){
if(/<$tagname>(.+)<\/$tagname>/){
close XML;
return $1;
}
}

}

XML::Parser使おうと思ったのだけれど、マルチバイト文字の処理とかUTFフラグの件などきちんと理解ができなかったので、簡単に作ってみました。