PHPではバージョン5.0以降でSimpleXML拡張モジュールというものが追加されました。
SimpleXMLを使用すると、これまでのDOMオブジェクトに比べてXMLの操作が容易になります。
ですが、古いバージョンを元にしたライブラリではDOMベースのプログラムも少なくありません。
そこで今回はDOMとSimpleXMLの相互変換関数を確認しておきます。
SimpleXML -> DOM
SimpleXMLからDOMの変換はdom_import_simplexml関数を使用します。
関数仕様
DOMElement dom_import_simplexml( SimpleXMLElement $node ) |
プログラム例
// SimpleXMLオブジェクトを作成 $xmlStr = '<items><item>item1</item><item>item2</item></items>'; $sxml = simplexml_load_string( $xmlStr ); // DomNodeオブジェクトに変換 $dxml = dom_import_simplexml( $sxml ); // 変換後のオブジェクトから情報を取得 foreach( $dxml->childNodes as $data ) { echo( $data->getNodePath() . ": " . $data->C14N() . "\n" ); } |
実行結果
/items/item[1]: <item>item1</item> /items/item[2]: <item>item2</item> |
DOM -> SimpleXML
逆にDOMからSimpleXMLに変換する場合は、simplexml_import_dom()です。
関数仕様
SimpleXMLElement simplexml_import_dom ( DOMNode $node [, string $class_name = "SimpleXMLElement" ] ) |
プログラム例
// DOMオブジェクトを作成 $xmlStr = '<items><item>item1</item><item>item2</item></items>'; $dxml = new DOMDocument; $dxml->loadXML( $xmlStr ); // SimpleXmlオブジェクトに変換 $sxml = simplexml_import_dom( $dxml ); // 変換後のオブジェクトをダンプ var_dump( $sxml ); |
実行結果
object(SimpleXMLElement)[2] public 'item' => array 0 => string 'item1' (length=5) 1 => string 'item2' (length=5) |
関連記事
コメントを残す