DOM XML 関数

導入

domxml 拡張モジュールは、DOM 標準に対する互換性を改善するため PHP バージョン 4.3.0 で書き直されました。拡張モジュールには まだ多くの古い関数が含まれていますが、使用は推奨されません。 特にオブジェクト指向でない関数の使用は避けるべきです。

拡張モジュールにより、DOM API で XML ドキュメントを処理することが 可能となります。また、完全な XML ドキュメントを PHP オブジェクトツリーに 変換する関数 domxml_xmltree() も提供されています。 現在、このツリーは読み込み専用とされています。 このツリーを修正することは可能ですが、DomDocument_dump_mem() にこれを適用することはできないため、意味はないでしょう。 XML ファイルを読み込んで修正した版を書き込みたい場合は DomDocument_create_element()DomDocument_create_text()set_attribute() 等を使用し、最後に DomDocument_dump_mem() 関数を使用してください。

注意: この拡張モジュールは » PECL レポジトリに移動 されており、以下のバージョン以降 PHP にバンドルされなくなっています。 PHP 5.0.0.

注意: この拡張は実験的なものではありません。しかしながら、PHP 5 版は決してリリースされないでしょう。PHP 4 でのみ配布されます。 もし PHP 5 でDOM XML をサポートする必要がある場合、 DOM 拡張を使用することができます。 この domxml 拡張は DOM 拡張と互換性はありません。

要件

この拡張モジュールは、» GNOME XML ライブラリを使用します。このライブラリをダウンロードし、 インストールしてください。少なくとも libxml-2.4.14 が必要です。 DOM XSLT 機能を使用するために » libxslt ライブラリ» http://www.exslt.org/ による EXSLT 拡張を使用することができます。 (拡張) XSLT 機能を使用するには、これらのライブラリをダウンロード、 インストールしてください。少なくとも libxslt-1.0.18 が必要です。

インストール手順

この » PECL 拡張 モジュールは PHP にバンドルされていません。 この PECL 拡張モジュールをインストールする方法は、 マニュアルの PECL 拡張モジュールのインストール という章にあります。 新規リリース・ダウンロード・ソースファイル・管理者情報・CHANGELOG といった関連する情報については、次の場所にあります。 » http://pecl.php.net/package/domxml.

この拡張モジュールは、 --with-dom=[DIR]を指定してPHPを設 定した場合のみ利用可能です。DOM XSLTサポートを組み込むには、 --with-dom-xslt[=DIR] を追加して下 さい。DIRは、libxsltをインストールしたディレクトリです。DOM EXSLTサ ポートを有効にするには、 --with-dom-exslt[=DIR] を指定しま す。ただし、DIRはlibxsltをインストールしたディレクトリです。

Windows ユーザの場合、これらの関数を使用するには php.iniphp_domxml.dll を有効にしてください。 PHP 4 の場合、この DLL は PHP の Windows ダウンロードバイナリの extensions/ ディレクトリ にあります。 この PECL 拡張モジュール用の DLL は、» PHP のダウンロード ページあるいは » http://pecl4win.php.net/ からダウンロードできます。 また、この拡張を有効にするためには、追加の DLL をシステムパスにコピーする必要があります。 PHP 4 では、この DLL は dlls/ にあります。 DLL 名は、PHP <= 4.2.0 で libxml2.dll、 PHP >= 4.3.0 で iconv.dll です。 また、PHP 5.0.0 以降では iconv が Windows 用 PHP バイナリにデフォルトでコンパイルされていますので、 外部 DLL は必要ありません。

古い関数

DOM 標準に沿っておらず、もう使うべきではない関数がごく少数あります。 これらの関数を以下の表に示します。 関数 DomNode_append_child() はその動作が変更されました。 この関数は、子を追加しますが、兄弟は追加しません。 これにより、アプリケーションの動作に影響が生じる場合、DOM ではない関数 DomNode_append_sibling() を使用してください。

古い関数とその代替関数
古い関数 新しい関数
xmldoc domxml_open_mem()
xmldocfile domxml_open_file()
domxml_new_xmldoc domxml_new_doc()
domxml_dump_mem DomDocument_dump_mem()
domxml_dump_mem_file DomDocument_dump_file()
DomDocument_dump_mem_file DomDocument_dump_file()
DomDocument_add_root DomDocument_create_element()の後に DomNode_append_child()
DomDocument_dtd DomDocument_doctype()
DomDocument_root DomDocument_document_element()
DomDocument_children DomNode_child_nodes()
DomDocument_imported_node 代替関数なし。
DomNode_add_child 例えば DomDocument_create_element() により、 新しいノードを作成し、 DomNode_append_child() により追加します。
DomNode_children DomNode_child_nodes()
DomNode_parent DomNode_parent_node()
DomNode_new_child 例えば DomDocument_create_element() で 新規ノードを作成し、 DomNode_append_child() で追加します。
DomNode_set_content 例えば DomDocument_create_element() で 新規ノードを作成し、 DomNode_append_child() で追加します。
DomNode_get_content コンテンツは単なるテキストノードであり、 DomNode_child_nodes() でアクセス可能です。
DomNode_set_content コンテンツは単なるテキストノードであり、 DomNode_append_child() で追加できます。

定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。

XML定数
定数 説明
XML_ELEMENT_NODE (integer) 1 ノードは要素(element)である
XML_ATTRIBUTE_NODE (integer) 2 ノードは属性(attribute)である
XML_TEXT_NODE (integer) 3 ノードはテキストの一部である
XML_CDATA_SECTION_NODE (integer) 4  
XML_ENTITY_REF_NODE (integer) 5  
XML_ENTITY_NODE (integer) 6 ノードは&nbsp;のようなエンティティである
XML_PI_NODE (integer) 7 ノードは処理命令(PI)である
XML_COMMENT_NODE (integer) 8 ノードはコメントである
XML_DOCUMENT_NODE (integer) 9 ノードはドキュメントである
XML_DOCUMENT_TYPE_NODE (integer) 10  
XML_DOCUMENT_FRAG_NODE (integer) 11  
XML_NOTATION_NODE (integer) 12  
XML_GLOBAL_NAMESPACE (integer) 1  
XML_LOCAL_NAMESPACE (integer) 2  
XML_HTML_DOCUMENT_NODE (integer)    
XML_DTD_NODE (integer)    
XML_ELEMENT_DECL_NODE (integer)    
XML_ATTRIBUTE_DECL_NODE (integer)    
XML_ENTITY_DECL_NODE (integer)    
XML_NAMESPACE_DECL_NODE (integer)    
XML_ATTRIBUTE_CDATA (integer)    
XML_ATTRIBUTE_ID (integer)    
XML_ATTRIBUTE_IDREF (integer)    
XML_ATTRIBUTE_IDREFS (integer)    
XML_ATTRIBUTE_ENTITY (integer)    
XML_ATTRIBUTE_NMTOKEN (integer)    
XML_ATTRIBUTE_NMTOKENS (integer)    
XML_ATTRIBUTE_ENUMERATION (integer)    
XML_ATTRIBUTE_NOTATION (integer)    
XPATH_UNDEFINED (integer)    
XPATH_NODESET (integer)    
XPATH_BOOLEAN (integer)    
XPATH_NUMBER (integer)    
XPATH_STRING (integer)    
XPATH_POINT (integer)    
XPATH_RANGE (integer)    
XPATH_LOCATIONSET (integer)    
XPATH_USERS (integer)    
XPATH_NUMBER (integer)    

クラス

モジュールの API は、DOM レベル 2 標準に可能な限り基づいています。 結果的に API は完全にオブジェクト指向です。このモジュールを使用する際に DOM 標準が利用できることは望ましいことです。 この API はオブジェクト指向ですが、 最初の引数として処理するオブジェクトを渡すことによってコールできる、 オブジェクト指向でない関数も多くあります。 これらの関数は、主に過去のバージョンとの互換性確保のために維持されていますが、 新規開発での使用はもはや推奨されません。

この API は、公式な DOM API とは二つの点で異なっています。まず、 全てのクラスの属性は、同じ名前を有する関数として実装され、関数名は PHP の命名表記に基づいています。これは、DOM 関数 lastChild() が last_child() と書かれることを意味します。

このモジュールは、一連のクラスを定義します。メソッドも含めたリストを 以下の表に示します。クラスは、DOM 標準で DOMxxx という名前のものと等価です。

クラスの一覧
クラス名 親クラス
DomAttribute DomNode
DomCData DomNode
DomComment DomCData : DomNode
DomDocument DomNode
DomDocumentType DomNode
DomElement DomNode
DomEntity DomNode
DomEntityReference DomNode
DomProcessingInstruction DomNode
DomText DomCData : DomNode
Parser 現在はまだ DomParser と呼ばれています
XPathContext  

DomDocument クラス (DomDocument : DomNode)
メソッド名 関数名 注意
doctype DomDocument_doctype()  
document_element DomDocument_document_element()  
create_element DomDocument_create_element()  
create_text_node DomDocument_create_text_node()  
create_comment DomDocument_create_comment()  
create_cdata_section DomDocument_create_cdata_section()  
create_processing_instruction DomDocument_create_processing_instruction()  
create_attribute DomDocument_create_attribute()  
create_entity_reference DomDocument_create_entity_reference()  
get_elements_by_tagname DomDocument_get_elements_by_tagname()  
get_element_by_id DomDocument_get_element_by_id()  
dump_mem DomDocument_dump_mem() DOM 標準ではありません
dump_file DomDocument_dump_file() DOM 標準ではありません
html_dump_mem DomDocument_html_dump_mem() DOM 標準ではありません
xpath_init xpath_init DOM 標準ではありません
xpath_new_context xpath_new_context DOM 標準ではありません
xptr_new_context xptr_new_context DOM 標準ではありません

DomElement クラス (DomElement : DomNode)
メソッド名 関数名 注意
tagname DomElement_tagname()  
get_attribute DomElement_get_attribute()  
set_attribute DomElement_set_attribute()  
remove_attribute DomElement_remove_attribute()  
get_attribute_node DomElement_get_attribute_node()  
set_attribute_node DomElement_set_attribute_node()  
get_elements_by_tagname DomElement_get_elements_by_tagname()  
has_attribute DomElement_has_attribute()  

DomNode クラス
メソッド名 注意
DomNode_node_name()  
DomNode_node_value()  
DomNode_node_type()  
DomNode_last_child()  
DomNode_first_child()  
DomNode_child_nodes()  
DomNode_previous_sibling()  
DomNode_next_sibling()  
DomNode_parent_node()  
DomNode_owner_document()  
DomNode_insert_before()  
DomNode_append_child()  
DomNode_append_sibling() DOM 標準ではありません。この関数は 先ほどの DomNode_append_child() の動作をエミュレートします。
DomNode_remove_child()  
DomNode_has_child_nodes()  
DomNode_has_attributes()  
DomNode_clone_node()  
DomNode_attributes()  
DomNode_unlink_node() DOM 標準ではありません
DomNode_replace_node() DOM 標準ではありません
DomNode_set_content() DOM 標準にはなく、古いメソッドです
DomNode_get_content() DOM 標準にはなく、古いメソッドです
DomNode_dump_node() DOM 標準ではありません
DomNode_is_blank_node() DOM 標準ではありません

DomAttribute クラス (DomAttribute : DomNode)
メソッド名 注意
name DomAttribute_name()  
value DomAttribute_value()  
specified DomAttribute_specified()  

DomProcessingInstruction クラス (DomProcessingInstruction : DomNode)
メソッド名 関数名 注意
target DomProcessingInstruction_target()  
data DomProcessingInstruction_data()  

Parser クラス
メソッド名 関数名 注記
add_chunk Parser_add_chunk()  
end Parser_end()  

XPathContext クラス
メソッド名 関数名 注記
eval XPathContext_eval()  
eval_expression XPathContext_eval_expression()  
register_ns XPathContext_register_ns()  

DomDocumentType クラス (DomDocumentType : DomNode)
メソッド名 関数名 注記
name DomDocumentType_name()  
entities DomDocumentType_entities()  
notations DomDocumentType_notations()  
public_id DomDocumentType_public_id()  
system_id DomDocumentType_system_id()  
internal_subset DomDocumentType_internal_subset()  

クラス DomDtd は DomNode から派生したものです。DomComment は DomCData から派生したものです。

このリファレンスにおける多くの例は、XML 文字列を必要とします。 この文字列を全ての例で繰りかえし記述するかわりに、ファイルに書き込んで 各例で読み込むことにします。この読み込まれるファイルは、 以下の例に示されています。XML ドキュメントを作成し、 DomDocument_open_file() で読み込むことも可能です。

Example#1 XML 文字列を有するファイル example.inc を読み込む

<?php
$xmlstr 
"<?xml version='1.0' standalone='yes'?>
<!DOCTYPE chapter SYSTEM '/share/sgml/Norman_Walsh/db3xml10/db3xml10.dtd'
[ <!ENTITY sp \"spanish\">
]>
<!-- lsfj  -->
<chapter language='en'><title language='en'>Title</title>
 <para language='ge'>
  &sp;
  <!-- comment -->
  <informaltable ID='findme' language='&sp;'>
   <tgroup cols='3'>
    <tbody>
     <row><entry>a1</entry><entry
morerows='1'>b1</entry><entry>c1</entry></row>
<row><entry>a2</entry><entry>c2</entry></row>
     <row><entry>a3</entry><entry>b3</entry><entry>c3</entry></row>
    </tbody>
   </tgroup>
  </informaltable>
 </para>
</chapter>"
;
?>

目次

PHPマニュアル検索

ナビゲーション

関数リスト

同一レベル項目

MaxDB PHP 拡張モジュール
Mhash 関数
GeoIP 関数
Sybase 関数
ストリーム関数
イメージ関数(image)
GNU Recode 関数
Ovrimos SQL 関数
XSL 関数
正規表現関数(Perl 互換)
Fileinfo 関数
ディレクトリ関数
Cyrus IMAP 管理関数
ID3 関数
文字型 (ctype) 関数
MySQL 改良版拡張サポート(mysqli)
SimpleXML関数
PostgreSQL 関数 (PDO_PGSQL)
DBM 関数 [非推奨]
XMLWriter 関数
Secure Shell2 関数
クラック関数 (Crack)
XSLT 関数
Tokenizer 関数
IMAP、POP3 および NNTP 関数
DB++ 関数
OpenSSL 関数
filePro 関数
エラー処理およびログ記録関数
ソケット関数
gnupg 関数
SNMP 関数
ネットワーク関数
Informix 関数
配列関数(array)
runkit 関数
XML-RPC 関数
Memcache 関数
Microsoft SQL Server および Sybase 関数 (PDO_DBLIB)
Net_Gopher
W32api 関数
関数処理関数(funchand)
CCVS API 関数 [非推奨]
vpopmail 関数
Firebird/Interbase 関数 (PDO_FIREBIRD)
Subversion 関数
DOM 関数
Ncurses 端末画面制御関数
Oracle 関数
IRC Gateway 関数
Advanced PHP Debugger (APD)
enchant 関数
その他の関数(Misc)
Classkit 関数
PHP / Java の連携
出力制御関数(output control)
PostgreSQL 関数
Pspell 関数
oggvorbis
Apache専用の関数
BBCode 関数
Rar 関数
POSIX 関数
XML パーサ関数
Oracle 関数 (PDO_OCI)
LDAP 関数
Bzip2 圧縮関数
マルチバイト文字列関数 (mbstring)
ダイレクト IO (DIO) 関数
ファイルシステム関数
NSAPI用関数
win32service 関数
Informix 関数 (PDO_INFORMIX)
CURL, Client URL Library 関数
Satellite CORBA クライアント拡張 [推奨されません]
Tidy 関数
セッション処理関数(session)
OpenAL 音声バインディング
Expect 関数
Haru PDF 関数
Phar アーカイブストリームおよびクラス
URL 関数
zlib 圧縮関数
IBM 関数 (PDO_IBM)
libxml 関数
共有メモリ関数(shmop)
FTP 関数
Credit Mutuel CyberMUT 関数
.NET 関数
XMLReader 関数
Unified ODBC 関数
MySQL 関数
変数操作関数(Variable Handling)
IIS 管理関数
BCMath任意精度数学関数
i18n (国際化) 関数
Zip ファイル関数
win32ps 関数
dBase 関数
Imagick 画像ライブラリ
xattr 関数
YAZ 関数
Alternative PHP Cache (APC)
統計関数
SDO XML データアクセスサービス関数
オブジェクトプロパティとメソッドコールのオーバーロード
Mohawk Software セッションハンドラ関数
フィルタ関数
RPM ヘッダ読み込み関数
メール関数(Mail)
TCP ラッパ関数(TCP Wrappers)
SAM - Simple Asynchronous Messaging: 単純な非同期メッセージング
Oracle 関数 [推奨されません]
ODBC および DB2 関数 (PDO_ODBC)
Mcrypt 暗号化関数
PHP バイトコードコンパイラ (bcompiler)
mSQL 関数
Standard PHP Library (SPL) 関数
セマフォ・共有メモリおよび IPC 関数(semaphore)
SESAM データベース関数
GMP 関数
Radius
Newt 関数
日付・時刻関数
Parsekit 関数
Verisign Payflow Pro 関数
クラス/オブジェクト関数
Paradox ファイルアクセス
Unicode 関数
JSON 関数
Swish 関数
数学関数(Math)
mnoGoSearch 関数
Firebird/InterBase 関数
xdiff 関数
オブジェクトの集約/合成関数
Forms Data Format 関数
SOAP関数
KADM5
ハッシュ関数
Lotus Notes 関数
LZF 関数
Mimetype 関数
SCA 関数
YP/NIS 関数
ファイル改変監視関数(FAM)
ClibPDF 関数 [非推奨]
Cybercash 支払関数
Aspell関数(古い拡張モジュール)
PostgreSQL セッション保存ハンドラ
PDF 関数
カレンダー関数
プリンタ関数
Exif 関数
SQLite 関数
Shockwave Flash 関数
GNU Readline
Strings(文字列関数)
Mailparse 関数
Flash 用 Ming 関数
Microsoft SQL Server 関数
DOM XML 関数
SDO 関数
Hyperwave 関数
WDDX 関数
MCAL 関数
プロセス制御関数
SDO リレーショナルデータアクセスサービス関数
Hyperwave API 関数
FriBiDi 関数
プログラム実行関数
正規表現(regex)関数 (POSIX拡張サポート)
IBM DB2、Cloudscape および Apache Derby 関数
Ingres II 関数
(dbm 型の)データベース抽象化レイヤ関数
COM と .Net (Windows)
HTTP
PDO 関数
PHP オプションと情報(info)
qtdom 関数
muscat 関数
iconv 関数
MCVE (Monetra) 支払い関数
dbx 関数
SQLite 関数 (PDO_SQLITE)
MySQL 関数 (PDO_MYSQL)
Gettext 関数
PostScript ドキュメントの作成
FrontBase 関数
PHPマニュアル@apis
| PEARマニュアル | Smartyマニュアル | PostgreSQLマニュアル |