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フラグの件などきちんと理解ができなかったので、簡単に作ってみました。