DOM XML Funktionen
Einführung
Diese Erweiterung ist EXPERIMENTELL. Das Verhalten dieser Erweiterung, einschließlich der Funktionsnamen, und alles Andere was hier dokumentiert ist, kann sich in zukünftigen PHP-Versionen ohne Ankündigung ändern. Seien Sie gewarnt und verwenden Sie diese Erweiterung auf eigenes Risiko.
Die DOM XML Erweiterung wurde in PHP 4.3.0 überholt, um dem DOM Standard besser zu entsprechen. Die Erweiterung enthält noch immer viele alte Funktionen, die aber nicht mehr benutzt werden sollten. Im Besonderen sollten nicht objektorientierte Funktionen vermieden werden.
Diese Erweiterung erlaubt es, an einem XML Dokument mit dem DOM API zu arbeiten. Sie bietet auch die Funktion domxml_xmltree(), um das gesamte XML Dokument in einen Baum von PHP Objekten zu verwandeln. Zur Zeit sollten Sie diesen Baum nur zum Lesen verwenden — Sie können ihn zwar modifizieren, aber nachdem DomDocument_dump_mem() nicht darauf angewendet werden kann, macht dies keinen Sinn. Sollten Sie eine XML Datei lesen und eine modifizierte Version schreiben wollen, benutzen Sie die Funktionen DomDocument_create_element(), DomDocument_create_text_node(), set_attribute(), etc. und schließlich DomDocument_dump_mem().
Anforderungen
Diese Erweiterung macht von der » GNOME XML library Gebrauch. Laden Sie diese bitte herunter und installieren Sie diese Bibliothek. Sie werden zumindest libxml-2.4.14 benötigen. Um DOM XSLT Features zu benutzen, können Sie die » libxslt library und EXSLT Erweiterungen von » https://www.exslt.org/ verwenden. Laden Sie diese Bibliotheken herunter und installieren Sie diese, wenn Sie den Einsatz von (erweiterten) XSLT Features planen. Sie werden zumindest libxslt-1.0.18 benötigen.
Installation
Diese » PECL Erweiterung ist nicht Teil von PHP. Zusätzliche Informationen, wie neue Releases, Downloads Quelldateien, Maintainerinformation und ein CHANGELOG finden Sie hier: » https://pecl.php.net/package/domxml.
Für PHP 4 finden Sie die Quellen dieser PECL Erweiterung im ext/ Verzeichnis innerhalb der PHP Quellen oder unter dem PECL Link wie oben angegeben. Diese Erweiterung steht nur zur Verfügung, wenn Sie PHP mit der Option --with-dom[=DIR] konfiguriert haben. Fü¼r DOM XSLT Unterstützung können Sie die Option --with-dom-xslt[=DIR] verwenden. DIR ist das Installationsverzeichnis von libxslt. Für DOM EXSLT Unterstützung können Sie die Option --with-dom-exslt[=DIR] verwenden, wobei DIR das libexslt Installationsverzeichnis ist.
Falls Sie Windows benutzen, müssen Sie php_domxml.dll in der php.ini aktivieren um diese Funktionen benutzen zu können. Für PHP 4 finden Sie die DLL im extensions/ Verzeichnis der PHP Windows Binärdistribution. Sie können die DLL für diese PECL Erweiterung entweder von » PHP Downloads oder von » https://snaps.php.net/ herunterladen. Weiterhin gibt es eine zusätzliche DLL, bei der Sie sicherstellen müssen, dass Sie in Ihrem Suchpfad gefunden wird. Für PHP 4 finden Sie diese DLL im dlls/Verzeichnis. Für PHP <= 4.2.0 benötigen Sie libxml2.dll, für PHP >= 4.3.0 iconv.dll. Seit PHP 5.0.0 ist iconv in der Binärdistribution für Windows einkompiliert, deshalb benötigen Sie keine zusätzliche DLL.
Veraltete Funktionen
Es gibt ziemlich viele Funktionen, die nicht in den DOM Standard passen und nicht mehr länger benutzt werden sollten. Diese Funktionen sind in der folgenden Tabelle aufgelistet. Die Funktion DomNode_append_child() hat ihr Verhalten geändert, indem sie nun ein 'Kind' statt einem 'Geschwister' hinzufügt. Wenn Ihre Applikation deshalb nicht mehr funktioniert, verwenden Sie die nicht DOM standardkonforme Funktion DomNode_append_sibling().
Alte Funktion | Neue Funktion |
---|---|
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() gefolgt von DomNode_append_child() |
DomDocument_dtd | DomDocument_doctype() |
DomDocument_root | DomDocument_document_element() |
DomDocument_children | DomNode_child_nodes() |
DomDocument_imported_node | Kein Ersatz. |
DomNode_add_child | Erstellen Sie einen neuen Knoten mit z.B. DomDocument_create_element() und fügen Sie ihn mit DomNode_append_child() hinzu. |
DomNode_children | DomNode_child_nodes() |
DomNode_parent | DomNode_parent_node() |
DomNode_new_child | Erstellen Sie einen neuen Knoten mit z.B. DomDocument_create_element() und fügen Sie ihn mit DomNode_append_child() hinzu. |
DomNode_set_content | Erstellen Sie einen neuen Knoten mit z.B. DomDocument_create_text_node() und fügen Sie ihn mit DomNode_append_child() hinzu. |
DomNode_get_content | Der Inhalt ist nur ein Textknoten, auf den mittels DomNode_child_nodes() zugegriffen werden kann. |
DomNode_set_content | Der Inhalt ist nur ein Textknoten, der mittels DomNode_append_child() hinzugefügt werden kann. |
Vordefinierte Konstanten
Folgende Konstanten werden von dieser Erweiterung definiert und stehen nur zur Verfügung, wenn die Erweiterung entweder statisch in PHP kompiliert oder dynamisch zur Laufzeit geladen wurde.
Constant | Value | Description |
---|---|---|
XML_ELEMENT_NODE (integer) | 1 | Node is an element |
XML_ATTRIBUTE_NODE (integer) | 2 | Node is an attribute |
XML_TEXT_NODE (integer) | 3 | Node is a piece of text |
XML_CDATA_SECTION_NODE (integer) | 4 | |
XML_ENTITY_REF_NODE (integer) | 5 | |
XML_ENTITY_NODE (integer) | 6 | Node is an entity like |
XML_PI_NODE (integer) | 7 | Node is a processing instruction |
XML_COMMENT_NODE (integer) | 8 | Node is a comment |
XML_DOCUMENT_NODE (integer) | 9 | Node is a document |
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) |
Klassen
Das API dieses Moduls entspricht dem DOM Level 2 Standard so weit wie möglich. Folglich ist das API vollständig objektorientiert. Es wäre sinnvoll, den DOM Standard verfügbar zu haben, wenn Sie dieses Modul benutzen. Obwohl das API objektorientiert ist gibt es viele Funktionen, die in einer nicht objektorientierten Art aufgerufen werden können, indem das zu bearbeitende Objekt als das erste Argument übergeben wird. Diese Funktionen dienen hauptsächlich der Kompatibilität zu älteren Versionen dieser Erweiterung und sollten deshalb beim Erstellen neuer Skripte nicht mehr verwendet werden.
Dieses API unterscheidet sich von dem offiziellen DOM API auf zwei Arten. Erstens sind alle Klassenattribute als Funktionen mit dem selben Namen implementiert. Zweitens folgen die Funktionsnamen der PHP Namenskonvention. Das heißt, dass eine DOM Funktion lastChild() als last_child() geschrieben wird.
Dieses Modul definiert eine Anzahl Klassen, die — inklusive ihrer Methoden — in den folgenden Tabellen aufgelistet sind. Klassen mit einem Äquivalent im DOM Standard werden DOMxxx genannt.
Klassenname | Basisklassen |
---|---|
DomAttribute | DomNode |
DomCData | DomNode |
DomComment | DomCData : DomNode |
DomDocument | DomNode |
DomDocumentType | DomNode |
DomElement | DomNode |
DomEntity | DomNode |
DomEntityReference | DomNode |
DomProcessingInstruction | DomNode |
DomText | DomCData : DomNode |
Parser | Derzeit noch immer DomParser genannt |
XPathContext |
Methodenname | Funktionsname | Anmerkung |
---|---|---|
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() | kein DOM Standard |
dump_file | DomDocument_dump_file() | kein DOM Standard |
html_dump_mem | DomDocument_html_dump_mem() | kein DOM Standard |
xpath_init | xpath_init | kein DOM Standard |
xpath_new_context | xpath_new_context | kein DOM Standard |
xptr_new_context | xptr_new_context | kein DOM Standard |
Methodenname | Funktionsname | Anmerkung |
---|---|---|
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() | |
get_elements_by_tagname | DomElement_get_elements_by_tagname() | |
has_attribute | DomElement_has_attribute() |
Methodenname | Anmerkung |
---|---|
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() | Nicht im DOM Standard. Diese Funktion emuliert das frühere Verhalten von DomNode_append_child(). |
DomNode_remove_child() | |
DomNode_has_child_nodes() | |
DomNode_has_attributes() | |
DomNode_clone_node() | |
DomNode_attributes() | |
DomNode_unlink_node() | Nicht im DOM Standard |
DomNode_replace_node() | Nicht im DOM Standard |
DomNode_set_content() | Nicht im DOM Standard, veraltet |
DomNode_get_content() | Nicht im DOM Standard, veraltet |
DomNode_dump_node() | Nicht im DOM Standard |
DomNode_is_blank_node() | Nicht im DOM Standard |
Methodenname | Anmerkung | |
---|---|---|
name | DomAttribute_name() | |
value | DomAttribute_value() | |
specified | DomAttribute_specified() |
Methodenname | Funktionsname | Anmerkung |
---|---|---|
target | DomProcessingInstruction_target() | |
data | DomProcessingInstruction_data() |
Methodenname | Funktionsname | Anmerkung |
---|---|---|
add_chunk | Parser_add_chunk() | |
end | Parser_end() |
Methodenname | Funktionsname | Anmerkung |
---|---|---|
eval | XPathContext_eval() | |
eval_expression | XPathContext_eval_expression() | |
register_ns | XPathContext_register_ns() |
Methodenname | Funktionsname | Anmerkung |
---|---|---|
name | DomDocumentType_name() | |
entities | DomDocumentType_entities() | |
notations | DomDocumentType_notations() | |
public_id | DomDocumentType_public_id() | |
system_id | DomDocumentType_system_id() | |
internal_subset | DomDocumentType_internal_subset() |
Die Klasse DomDtd ist von DomNode, und DomComment von DomCData abgeleitet
Beispiele
Viele Beispiele in dieser Referenz erfordern einen XML String. Anstatt diesen String laufend zu wiederholen, wird er in eine Datei geschrieben, die von jedem Beispiel eingebunden wird. Diese einzubindende Datei wird in dem folgenden Beispielteil gezeigt. Alternativ dazu können Sie ein XML Dokument erstellen, und dieses mit DomDocument_open_file() einlesen.
Example#1 Einzubindende Datei example.inc mit XML String
<?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>";
?>
Inhaltsverzeichnis
- DomAttribute->name — Gibt den Namen eines Attributes zurück.
- DomAttribute->set_value — Sets the value of an attribute
- DomAttribute->specified — Überprüft, ob ein Attribut gesetzt ist.
- DomAttribute->value — Gibt den Wert eines Attributes zurück
- DomDocument->add_root [deprecated] — Fügt ein Wurzelelement hinzu [veraltet].
- DomDocument->create_attribute — Generiere ein neues Attribut.
- DomDocument->create_cdata_section — Generiere ein neues cdata-Element
- DomDocument->create_comment — Generiere eine neues Kommentarelement
- DomDocument->create_element_ns — Create new element node with an associated namespace
- DomDocument->create_element — Create new element node
- DomDocument->create_entity_reference — Erstelle eine Entity-Referenz.
- DomDocument->create_processing_instruction — Generiert eine neue Ausführungsanweisung
- DomDocument->create_text_node — Generiere ein neues Textelement
- DomDocument->doctype — Gibt den Dokumententyp zurück
- DomDocument->document_element — Gibt das Wurzelelement zurück
- DomDocument->dump_file — Schreibt den internen XML-Baum zurück in eine Datei
- DomDocument->dump_mem — Schreibt den internen XML-Baum in eine Zeichenkette
- DomDocument->get_element_by_id — Sucht nach einem Element mit eine bestimmten ID
- DomDocument->get_elements_by_tagname — Gibt einen Array der Dokumentenknoten mit dem übergebenen Tag-Namen oder einen leeren Array im Fehlerfall zutück.
- DomDocument->html_dump_mem — Schreibt den internen XML-Baum als HTML in eine Zeichenkette
- DomDocument->xinclude — Substitutes XIncludes in a DomDocument Object
- DomDocumentType->entities() — Returns list of entities
- DomDocumentType->internal_subset() — Returns internal subset
- DomDocumentType->name() — Returns name of document type
- DomDocumentType->notations() — Returns list of notations
- DomDocumentType->public_id() — Returns public id of document type
- DomDocumentType->system_id() — Returns the system id of document type
- DomElement->get_attribute_node() — Returns the node of the given attribute
- DomElement->get_attribute() — Returns the value of the given attribute
- DomElement->get_elements_by_tagname() — Gets elements by tagname
- DomElement->has_attribute() — Checks to see if an attribute exists in the current node
- DomElement->remove_attribute() — Removes attribute
- DomElement->set_attribute_node() — Adds new attribute
- DomElement->set_attribute() — Sets the value of an attribute
- DomElement->tagname() — Returns the name of the current element
- DomNode->add_namespace — Adds a namespace declaration to a node
- DomNode->append_child — Adds a new child at the end of the children
- DomNode->append_sibling — Adds new sibling to a node
- DomNode->attributes — Returns list of attributes
- DomNode->child_nodes — Returns children of node
- DomNode->clone_node — Clones a node
- DomNode->dump_node — Dumps a single node
- DomNode->first_child — Returns first child of node
- DomNode->get_content — Gets content of node
- DomNode->has_attributes — Checks if node has attributes
- DomNode->has_child_nodes — Checks if node has children
- DomNode->insert_before — Inserts new node as child
- DomNode->is_blank_node — Checks if node is blank
- DomNode->last_child — Returns last child of node
- DomNode->next_sibling — Returns the next sibling of node
- DomNode->node_name — Returns name of node
- DomNode->node_type — Returns type of node
- DomNode->node_value — Returns value of a node
- DomNode->owner_document — Returns the document this node belongs to
- DomNode->parent_node — Returns the parent of the node
- DomNode->prefix — Returns name space prefix of node
- DomNode->previous_sibling — Returns the previous sibling of node
- DomNode->remove_child — Removes child from list of children
- DomNode->replace_child — Replaces a child
- DomNode->replace_node — Replaces node
- DomNode->set_content — Sets content of node
- DomNode->set_name — Sets name of node
- DomNode->set_namespace — Sets namespace of a node
- DomNode->unlink_node — Deletes node
- DomProcessingInstruction->data — Returns the data of ProcessingInstruction node
- DomProcessingInstruction->target — Returns the target of a ProcessingInstruction node
- DomXsltStylesheet->process() — Applies the XSLT-Transformation on a DomDocument Object
- DomXsltStylesheet->result_dump_file() — Dumps the result from a XSLT-Transformation into a file
- DomXsltStylesheet->result_dump_mem() — Dumps the result from a XSLT-Transformation back into a string
- domxml_new_doc — Creates new empty XML document
- domxml_open_file — Creates a DOM object from an XML file
- domxml_open_mem — Creates a DOM object of an XML document
- domxml_version — Gets the XML library version
- domxml_xmltree — Creates a tree of PHP objects from an XML document
- domxml_xslt_stylesheet_doc — Creates a DomXsltStylesheet Object from a DomDocument Object
- domxml_xslt_stylesheet_file — Creates a DomXsltStylesheet Object from an XSL document in a file
- domxml_xslt_stylesheet — Creates a DomXsltStylesheet object from an XSL document in a string
- domxml_xslt_version — Gets the XSLT library version
- xpath_eval_expression — Evaluates the XPath Location Path in the given string
- xpath_eval — Evaluates the XPath Location Path in the given string
- xpath_new_context — Creates new xpath context
- xpath_register_ns_auto — Register the given namespace in the passed XPath context
- xpath_register_ns — Register the given namespace in the passed XPath context
- xptr_eval — Evaluate the XPtr Location Path in the given string
- xptr_new_context — Create new XPath Context