molily: domXML unterknoten auslesen? hää

Beitrag lesen

Eine weitere Möglichkeit ist, eine DTD anzugeben und domxml_open_mem bzw. domxml_open_file mit dem Modus DOMXML_LOAD_DONT_KEEP_BLANKS aufzurufen. In der DTD müsste dann stehen, dass kein Text direkt im ELEMENT-Element auftauchen darf. Ein vereinfachtes Beispiel:

<?php

$xml = '<!DOCTYPE ELEMENT [
 <!ELEMENT ELEMENT (CHOICE)+>
 <!ELEMENT CHOICE (#PCDATA)>
]>
<ELEMENT type="select" name="look">
   <CHOICE>Sexy</CHOICE>
   <CHOICE>luky</CHOICE>
   <CHOICE>schmacky</CHOICE>
   <CHOICE>kacky</CHOICE>
</ELEMENT>';

$domdoc = domxml_open_mem($xml, DOMXML_LOAD_DONT_KEEP_BLANKS, $errors);
if ($domdoc and !$errors) {
 $root = $domdoc->document_element();
 $children = $root->child_nodes();
 var_dump($children);
}
?>

Die leeren Textknoten sollten nun nicht im Baum auftauchen, weil diese Lesart der DTD widerspräche.
Diese Vorgehensweise erfordert mindestens die PHP-Version 4.3.0.

Mathias