XML操作DOM XML関数(PHP4)
- PHP4でDOM関数を使う
- domxml_open_mem〔XML文字列からDOMオブジェクトを生成〕
- domxml_open_file〔XMLファイルからDOMオブジェクトを生成〕
- domxml_version〔XMLライブラリのバージョンを取得〕
- domxml_new_doc〔空の新規XMLドキュメントを作成〕
- DomDocument->dump_file〔内部XMLツリーをファイルにダンプ〕
- DomDocument->document_element〔ルート要素のノードを取得〕
- DomDocument->document_element〔ルート要素のノードを取得〕
PHP4でDOM関数を使う
unknown
PHP4のDOM関数をWindows環境で使えるようにするには、以下の設定が必要です。 以下はWindows XPの場合の設定例です。
-
(C:\WINDOWSフォルダ内にある)php.iniの550行目あたりにある「extension=php_domxml.dll」のコメントアウトを外します。
;extension=php_domxml.dll ↓ extension=php_domxml.dll
-
C:\php\dllsフォルダ内にある「iconv.dll」をC:\WINDOWS\system32フォルダ内にコピーします。
domxml_open_mem
XML文字列からDOMオブジェクトを生成
unknown
文字列として与えられたXMLをパースし、DOMオブジェクトを生成します。
第1引数XML文字列には、XMLファイルの内容を指定します。
オプションの第2引数モードには、DOMXML_LOAD_PARSING (デフォルト)、DOMXML_LOAD_VALIDATINGもしくは DOMXML_LOAD_RECOVERING のいずれかの定数を1つ指定できます (ビット OR により DOMXML_LOAD_DONT_KEEP_BLANKS, DOMXML_LOAD_SUBSTITUTE_ENTITIES と DOMXML_LOAD_COMPLETE_ATTRSも追加可)。
オプションの第3引数エラー配列にはエラーメッセージが代入されます(参照渡し)。
<?xml version="1.0" encoding="utf-8"?> <ranking> <item> <no>1</no> <title><![CDATA[文字列関数]]></title> <view>5,748</view> <url><![CDATA[./index.php?t=php&p=string]]></url> </item> <item> <no>2</no> <title><![CDATA[日付・時間関数]]></title> <view>5,109</view> <url><![CDATA[./index.php?t=php&p=datetime]]></url> </item> <item> <no>3</no> <title><![CDATA[ファイルシステム関数]]></title> <view>4,572</view> <url><![CDATA[./index.php?t=php&p=file]]></url> </item> <item> <no>4</no> <title><![CDATA[マルチバイト文字列関数]]></title> <view>4,450</view> <url><![CDATA[./index.php?t=php&p=mbstring]]></url> </item> <item> <no>5</no> <title><![CDATA[php.ini の設定例]]></title> <view>4,170</view> <url><![CDATA[./index.php?t=php&p=ini]]></url> </item> </ranking>
<?
# XMLファイルへのパス
$xmlFile="./xml/ranking.inc";
# XMLファイルの内容を文字列として変数に格納
$xmlStr=file_get_contents($xmlFile);
if(!$dom=domxml_open_mem($xmlStr)){
echo "文書のパース中にエラーが発生いしました";
exit;
}
$root=$dom->document_element();
echo $root->node_name(); // ranking
?>
domxml_open_file
XMLファイルからDOMオブジェクトを生成
unknown
XMLファイルとして与えられたXMLをパースし、DOMオブジェクトを生成します。
第1引数ファイル名には、XMLファイルへのパスを指定します。ファイルへのアクセスは読み取り専用モードです。
オプションの第2引数モードには、DOMXML_LOAD_PARSING (デフォルト)、DOMXML_LOAD_VALIDATINGもしくはDOMXML_LOAD_RECOVERINGのいずれかの定数を1つ指定できます。 ビット OR によりDOMXML_LOAD_DONT_KEEP_BLANKS、DOMXML_LOAD_SUBSTITUTE_ENTITIESとDOMXML_LOAD_COMPLETE_ATTRSも追加可。
オプションの第3引数エラー配列にはエラーメッセージが代入されます(参照渡し)。
<?xml version="1.0" encoding="utf-8"?> <ranking> <item> <no>1</no> <title><![CDATA[文字列関数]]></title> <view>5,748</view> <url><![CDATA[./index.php?t=php&p=string]]></url> </item> <item> <no>2</no> <title><![CDATA[日付・時間関数]]></title> <view>5,109</view> <url><![CDATA[./index.php?t=php&p=datetime]]></url> </item> <item> <no>3</no> <title><![CDATA[ファイルシステム関数]]></title> <view>4,572</view> <url><![CDATA[./index.php?t=php&p=file]]></url> </item> </ranking>
<?
# XMLファイルへのパス
$xmlFile="http://phpjavascriptroom.com/xml/ranking.xml";
# DOMドキュメントのインスタンス生成
$dom=domxml_open_file($xmlFile);
if(!$dom){
echo "文書のパース中にエラーが発生しました";
exit;
}
# ルート要素ノードを返す
$root = $dom->first_child();
# ルート要素ノード名を出力
echo $root->node_name();
?>
domxml_version
XMLライブラリのバージョンを取得
unknown
現在使用されているXMLライブラリのバージョンを取得し、そのバージョンを文字列として返します。
<?
# 現在使用しているXMLライブラリのバージョン
echo domxml_version(); // 20626
?>
domxml_new_doc
空の新規XMLドキュメントを作成
unknown
空の新規DOMドキュメントを生成して返します。
第1引数バージョン番号には、XMLのバージョン番号を文字列として指定します。
<?
# 空の新規XMLドキュメントを生成
$newObj=domxml_new_doc("1.0");
echo nl2br(print_r($newObj,true));
/*
domdocument Object
(
[name] => #document
[url] =>
[version] => 1.0
[standalone] => -1
[type] => 9
[compression] => -1
[charset] => 1
[0] => 7
[1] => 13561600
)
*/
?>
DomDocument->dump_file
内部XMLツリーをファイルにダンプ
unknown
DOMからXML文字列を生成し、ファイルにダンプします。
第1引数ファイル名には、ダンプするファイル名を指定します。
オプションの第2引数コンプレッションモードには、圧縮する(TRUE)か否か(FALSE)を指定します。 オプションの第3引数フォーマットには、整形してダンプする(TRUE)か否か(FALSE)を指定します。
<?
header('Content-Type: text/xml');
$doc = domxml_new_doc("1.0");
$root = $doc->add_root("ranking");
$item = $root->new_child("item", "");
$item->new_child("no", "1");
$item->new_child("title", mb_convert_encoding("文字列関数","UTF-8"));
$item->new_child("view", "5748");
$item->new_child("url", "./index.php?t=php&p=string");
$item = $root->new_child("item", "");
$item->new_child("no", "2");
$item->new_child("title", mb_convert_encoding("日付・時間関数","UTF-8"));
$item->new_child("view", "5109");
$item->new_child("url", "./index.php?t=php&p=datetime");
echo $doc->dump_mem();
# 整形してファイルにダンプ
$doc->dump_file("phpdom.xml", false, true);
/*
<ranking>
<item>
<no>1</no>
<title><![CDATA[文字列関数]]></title>
<view>5,748</view>
<url><![CDATA[./index.php?t=php&p=string]]></url>
</item>
<item>
<no>2</no>
<title><![CDATA[日付・時間関数]]></title>
<view>5,109</view>
<url><![CDATA[./index.php?t=php&p=datetime]]></url>
</item>
</ranking>
*/
?>
DomDocument->document_element
ルート要素のノードを取得
unknown
ルート要素のノードを返します。
<?
# XMLファイルへのパス
$xmlFile="http://phpjavascriptroom.com/xml/ranking.xml";
# DOMドキュメントのインスタンス生成
$dom=domxml_open_file($xmlFile);
if(!$dom){
echo "文書のパース中にエラーが発生いしました";
exit;
}
$root = $dom->document_element();
echo nl2br(print_r($root,true));
/*
domelement Object
(
[type] => 1
[tagname] => ranking
[0] => 3
[1] => 14657768
)
*/
?>
DomDocument->document_element
ルート要素のノードを取得
unknown
ルート要素のノードを返します。
<?
# XMLファイルへのパス
$xmlFile="http://phpjavascriptroom.com/xml/ranking.xml";
# DOMドキュメントのインスタンス生成
$dom=domxml_open_file($xmlFile);
if(!$dom){
echo "文書のパース中にエラーが発生いしました";
exit;
}
$root = $dom->document_element();
echo nl2br(print_r($root,true));
/*
domelement Object
(
[type] => 1
[tagname] => ranking
[0] => 3
[1] => 14657768
)
*/
?>