XXV. DOM XML Funktionen

Einführung

Warnung

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 http://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

This extension is only available if PHP was configured with --with-dom[=DIR]. Add --with-dom-xslt[=DIR] to include DOM XSLT support. DIR is the libxslt install directory. Add --with-dom-exslt[=DIR] to include DOM EXSLT support, where DIR is the libexslt install directory.

Note to Win32 Users: In order to enable this module on a Windows environment, you must copy one additional file from the DLL folder of the PHP/Win32 binary package to the SYSTEM32 folder of your Windows machine (Ex: C:\WINNT\SYSTEM32 or C:\WINDOWS\SYSTEM32). For PHP <= 4.2.0 copy libxml2.dll, for PHP >= 4.3.0 copy iconv.dll from the DLL folder to your SYSTEM32 folder.

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().

Tabelle 1. Veraltete Funktionen und deren Ersatz

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.

Tabelle 2. XML constants

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 &nbsp;
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.

Tabelle 3. Liste der Klassen

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  


Tabelle 4. DomDocument Klasse (DomDocument : DomNode)

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


Tabelle 5. DomElement Klasse (DomElement : DomNode)

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()  




Tabelle 7. DomAttribute Klasse (DomAttribute : DomNode)

Methodenname   Anmerkung
name DomAttribute_name()  
value DomAttribute_value()  
specified DomAttribute_specified()  


Tabelle 8. DomProcessingInstruction Klasse (DomProcessingInstruction : DomNode)

Methodenname Funktionsname Anmerkung
target DomProcessingInstruction_target()  
data DomProcessingInstruction_data()  


Tabelle 9. Parser Klasse

Methodenname Funktionsname Anmerkung
add_chunk Parser_add_chunk()  
end Parser_end()  


Tabelle 10. XPathContext Klasse

Methodenname Funktionsname Anmerkung
eval XPathContext_eval()  
eval_expression XPathContext_eval_expression()  
register_ns XPathContext_register_ns()  


Tabelle 11. DomDocumentType Klasse (DomDocumentType : DomNode)

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.

Beispiel 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'>
  &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>"
;
?>


Inhaltsverzeichnis
DomAttribute->name --  Gibt den Namen eines Attributes zurück.
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.
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 -- 
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 -- 
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 system id of document type
DomElement->get_attribute_node --  Returns value of attribute
DomElement->get_attribute --  Returns value of attribute
DomElement->get_elements_by_tagname --  Gets elements by tagname
DomElement->has_attribute --  Checks to see if attribute exists
DomElement->remove_attribute --  Removes attribute
DomElement->set_attribute --  Adds new attribute
DomElement->tagname --  Returns name of element
DomNode->add_namespace --  Adds a namespace declaration to a node.
DomNode->append_child --  Adds 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 data of pi node
DomProcessingInstruction->target --  Returns target of pi 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 XML file
domxml_open_mem -- Creates a DOM object of an XML document
domxml_version --  Get 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 XML document in a string.
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
xptr_eval --  Evaluate the XPtr Location Path in the given string
xptr_new_context --  Create new XPath Context

Noch Fragen? Poste sie ins Forum!

Übersicht
Aktionen
Login
Suche
Partner
Statistics