DOM XML関数

PHP マニュアル
前のページ |  | 次のページ

# XXVDOM XML関数

# はじめに

警告
このモジュールは、実験的なものです。これは、これらの関数の動作、関数名は、このドキュメントに書かれて事項と同様に告知なく将来的なPHPのリリースで変更される可能性があります。注意を喚起するとともに、このモジュールは使用者のリスクで使用して下さい。

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()関数を使用して下さい。

# 必要なもの

この拡張モジュールは、PHPのconfigureが GNOME XMLライブラリを用いて `--with-dom=[DIR]`を指定して 実行されている場合のみ利用可能です。libxml-2.2.7以降が必要です。

# 古い関数

表 1古い関数とその代替関数

古い関数 | 新しい関数
--- | ---
xmldoc | domxml_open_mem()
xmldocfiel | 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 | No replacement.
DomNode_add_child | Create a new node with e.g. DomDocument_create_element() und add it with 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()で追加できます。

# 定数

このモジュールは、以下の定数を定義します。

表 2XML定数

定数 | 値 | 説明
--- | --- | ---
XML_ELEMENT_NODE | 1 | ノードは要素(element)である
XML_ATTRIBUTE_NODE | 2 | ノードは属性(attribute)である
XML_TEXT_NODE | 3 | ノードはテキストの一部である
XML_CDATA_SECTION_NODE | 4 |
XML_ENTITY_REF_NODE | 5 |
XML_ENTITY_NODE | 6 | ノードは&nbsp;のようなエンティティである
XML_PI_NODE | 7 | ノードは処理命令(PI)である
XML_COMMENT_NODE | 8 | ノードはコメントである
XML_DOCUMENT_NODE | 9 | ノードはドキュメントである
XML_DOCUMENT_TYPE_NODE | 10 |
XML_DOCUMENT_FRAG_NODE | 11 |
XML_NOTATION_NODE | 12 |
XML_GLOBAL_NAMESPACE | 1 |
XML_LOCAL_NAMESPACE | 2 |

# クラス

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

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

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

表 3クラスの一覧

クラス名 | 親クラス
--- | ---
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 |

表 4DomDocument クラス (DomDocument : DomNode)

メソッド名 | 関数名 | 注意
--- | --- | ---
doctype | DomDocument_doctype() |
document_elemnent | 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標準ではない

表 5DomElement クラス (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() |

表 6DomNode クラス

メソッド名 | 注意
--- | ---
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_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標準ではない

表 7DomAttribute クラス (DomAttribute : DomNode)

メソッド名 |  | 注意
--- | --- | ---
name | DomAttribute_name() |
value | DomAttribute_value() |
specified | DomAttribute_specified() |

表 8DomProcessingInstruction クラス (DomProcessingInstruction : DomNode)

メソッド名 | 関数名 | 注意
--- | --- | ---
target | DomProcessingInstruction_target() |
data | DomProcessingInstruction_data() |

表 9Parser クラス

メソッド名 | 関数名 | 注記
--- | --- | ---
add_chunk | Parser_add_chunk() |
end | Parser_end() |

表 10XPathContext クラス

メソッド名 | 関数名 | 注記
--- | --- | ---
eval | XPathContext_eval() |
eval_expression | XPathContext_eval_expression() |
register_ns | XPathContext_register_ns() |

表 11DomDocumentType クラス (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()で読み込むことも可能で す。

例 1XML文字列を有するファイル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'>
      &amp;sp;
      <!-- comment -->
      <informaltable ID='findme' language='&amp;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>";
    ?>

前のページ | ホーム | 次のページ
rewinddir | 上に戻る | DomAttribute->name