Perlリファレンス

XML::Simple







XML::Simple


XMLパーサです。
XMLをPerlの多重ハッシュのようにしてくれます。
ほとんどの場合、XMLのパースにモジュールを使うよりも、正規表現で処理した方が簡単だと思います。
PerlのXMLパーサのモジュールは他にもあるが、XML::Simpleが簡単。

まず、use
use XML::Simple;

XMLinでハッシュパースする。
$parse=XMLin($xml);
$xmlはXML構造の文字列。
これだけで$parseにXMLをハッシュ化したようなのが代入されます。

<html>
 <head>
  <title>タイトル</title>
 </head>
 <body>
  <span>文章1</span>
  <span>文章2</span>
 </body>
</html>
↑例えばこんな構造のXMLがあったとします。
これを
$parse=XMLin($xml);
のようにして$parseに処理済みデータが格納されているとします。

$parse->{'html'}
は、ハッシュのリファレンスで、
ループ処理したい場合は、
foreach(keys(%{$parse->{'html'}})){
 処理;
}
こんな感じで、中にある<head>と<body>が取り出せる。

$parse->{'html'}->{'head'}
も内部にタグがあるので、ハッシュのリファレンスになっている。
print $parse->{'html'}->{'head'}->{'title'};
こんな感じで、<title>内のテキストである、「タイトル」が取得できる。

<body>内の<span>は2つあるが、配列で取り出せる。
foreach(@{$parse->{'html'}->{'body'}->{'span'}}){
 print $_;
}


XML::Simple使うと、マルチバイト文字に勝手にutf8フラグがついちゃいます。
Encodeを使って、
utf8::encode($str);
のようにして、マルチバイト文字が含まれる可能性のある部分は、
出力前に全部フラグを落とさないとダメかもです。






[編集] [新規] [削除] [バックアップ] [アップロード] [ログイン] [管理]
whwiki 1.3