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