XML::DOM - ぷちWiki

最終更新日時:

XML::DOM



XML::DOMはXML::Parserを拡張してDOMによるアクセスを可能にするPerlモジュールです。

インストール



XML::DOMのインストールにはXML::Parser等いくつかのPerlモジュールが必要となります。
CPANモジュールでインストールすれば基本的に関連モジュールも全て自動的にインストールされますが、自動的にインストールされない場合には手動で必要なモジュールをインストールする必要があります。

XML データを HTML に変換



初期化等おきまりのコード



XML::DOM では出力時の日本語は UNICODE しか基本的に使えません。
従って、UNICODE以外のエンコーディングで出力するにはJcode等で出力時にコンバートする必要があります。

 use XML::DOM;
 use Jcode;

XML::DOM ではエラーが発生した際に即終了してしまいます。
従って、eval でプログラム全体を囲っておき、エラーをハンドリングします。

 eval {&main(@ARGV)};
 print "エラー発生\n" if $@;

以下のようにして初期化をします。
$doc(Document オブジェクト)が XML データツリーのトップとなります。

 my $parser = new XML::DOM::Parser;
 my $doc = $parser->parsefile("test.xml");

タグの名前から要素を取り出す



Document オブジェクトやノードから該当するノードのリストを取得します。

 my @node = $doc->getElementsByTagName("NAME");

子ノードを取り出す



 my @child_node = $node->getChildNodes;

子ノードがあるか無いかは以下のようにしてチェックすることができます。

 $node->hasChildNodes || print "No Child Nodes\n";

親ノードを取り出す



 my $parent_node = $node->getParentNode;

文字データを取り出す



文字データは該当するタグのノードの子ノードとして存在しています。
従って、<NAME>koumei2</NAME> といった XML の場合は、以下のようにして取り出すことができます。

 my ($node) = $doc->getElementsByTagName("NAME");

 my ($text_node) = $node->getChildNodes;             

$text_string に "koumei2" が格納されます。

 my $text_string = $text_node->getData;

属性を取り出す



例えば<NAME mail="koumei2@xxx.com">koumei2</NAME>という XML があったとして、、、

 my ($node) = $doc->getElementsByTagName("NAME");

$attribute に"koumei2@xxx.com"が格納されます。
 my $attribute = $node->getAttribute("mail")