!!!技術的雑談-perlのXML::DOMでXMLをいじってみる !!環境 *使用OS:CentOS 3.5 *perl:5.8.0 (CentOS 3.5の標準) *XML::DOM:1.27 !!目的 *perl XML::DOMを使ってみる **XML文章のObject化 **XML Elementの追加 **XML Attributeの追加 **XML Fileの出力、文字列の取得 !!手順 !初期化 *XML::DOMをuseする。 *XML::DOM::Parserをコンストラクトする。 *XML File、又はXML Fileの中身の文字列をParserに食わせる *XML::DOM::Document Objectが返ってくる サンプル1 use strict; # XML::DOMの使用宣言 use XML::DOM; # 解析元になるXMLデータの作成 my $xml = <
EOF # XMLを解析してDOM Objectを作成する my $parser = new XML::DOM::Parser; # Parserの作成 my $doc = $parser->parse ($xml); # ParserにXMLを食わせる my $rootnode = $doc->getDocumentElement; # XMLのRoot Nodeを取得 # XMLの内容を標準出力に表示 print "\n\n******** XML Output ********\n"; print $doc->toString; 実行結果1
! Elementを追加 まず、cleateElement()でElementを作成し、それを親Nodeにつなげる。 サンプル2 use strict; # XML::DOMの使用宣言 use XML::DOM; # 解析元になるXMLデータの作成 my $xml = <
EOF # XMLを解析してDOM Objectを作成する my $parser = new XML::DOM::Parser; # Parserの作成 my $doc = $parser->parse ($xml); # ParserにXMLを食わせる my $rootnode = $doc->getDocumentElement; # XMLのRoot Nodeを取得 # 新しいNode(Element)の作成 my $newnode = $doc->createElement ('articleinfo'); # 親Node(Element)の子としてつなげる $rootnode->appendChild ($newnode); # XMLの内容を標準出力に表示 print "\n\n******** XML Output ********\n"; print $doc->toString; 実行結果2
! ElementにAttributeをつける ElementのsetAttribute()メソッドを使う サンプル3 use strict; # XML::DOMの使用宣言 use XML::DOM; # 解析元になるXMLデータの作成 my $xml = <
EOF # XMLを解析してDOM Objectを作成する my $parser = new XML::DOM::Parser; # Parserの作成 my $doc = $parser->parse ($xml); # ParserにXMLを食わせる my $rootnode = $doc->getDocumentElement; # XMLのRoot Nodeを取得 # 新しいNode(Element)の作成 my $newnode = $doc->createElement ('articleinfo'); # Attributeを設定する $newnode->setAttribute('id', 'hogehoge'); # 親Node(Element)の子としてつなげる $rootnode->appendChild ($newnode); # XMLの内容を標準出力に表示 print "\n\n******** XML Output ********\n"; print $doc->toString; 実行結果3
! ElementのTextを設定する ElementのsetNodeValue()メソッドを使う。 サンプル4 use strict; # XML::DOMの使用宣言 use XML::DOM; # 解析元になるXMLデータの作成 my $xml = <
EOF # XMLを解析してDOM Objectを作成する my $parser = new XML::DOM::Parser; # Parserの作成 my $doc = $parser->parse ($xml); # ParserにXMLを食わせる my $rootnode = $doc->getDocumentElement; # XMLのRoot Nodeを取得 # 新しいNode(Element)の作成 my $newnode = $doc->createElement ('articleinfo'); # Attributeを設定する $newnode->setAttribute('id', 'hogehoge'); # 親Node(Element)の子としてつなげる $rootnode->appendChild ($newnode); # 新しいNodeを作り、その中にTextを設定する my $para = $doc->createElement ('para'); $para->addText('fugafuga'); $rootnode->appendChild($para); # XMLの内容を標準出力に表示 print "\n\n******** XML Output ********\n"; print $doc->toString; 実行結果4
fugafuga
!!TODO *Nodeの取得方法を調べる(getParentNode()、getChildNodes()?) !!履歴 2007/3/28 -- 初版 [[技術的雑談]]へ戻る !!突っ込み *サンプルコードの「# XML::DOMの仕様宣言」は使用宣言だと思われます。 - 通りすがり (2018年04月29日 06時03分10秒) *ありがとうございます。修正しました。 - Tsubasa (2018年05月08日 12時54分53秒) {{comment}} [[技術的雑談]]へ戻る {{trackback}} [[技術的雑談]]へ戻る