Hallo,
Jetzt möchte ich wissen, ob der Knoten e1 ein Unterelement e2 besitzt.
Ich habe keine Ahnung, wie sich das mit SimpleXML lösen lässt. Wahrscheinlich aus dem Grund, weil es keine Möglichkeit gibt.
Wenn du allerdings sowieso auf komplexere Techniken wie XPath ausweichst, kannst du gleich die DOM-Extension benutzen. Überhaupt ist die DOM-Extension das Mittel der Wahl, wenn man mit XML-Dateien in dieser Weise arbeitet.
Geht das nicht auch irgendwie eleganter?
$doc = new DOMDocument();
$ergebnis = $doc->load('test.xml');
if ($ergebnis) {
$e1 = $doc->getElementsByTagName('e1')->item(0);
if ($e1->getElementsByTagName('e2')->length > 0) {
echo('e2 existiert');
} else {
echo('e2 existiert nicht');
}
}
Oder ähnlich.
Kann man den SimpleXML-Parser dazu überreden, die zur XML-Datei gehörige DTD zu berücksichtigen, sofern diese extern in einer Datei abgelegt ist? Standardmäßig scheint er die nämlich einfach zu übergehen, was sehr unschön ist, vor allem da er dann angeblich nicht definierte Entities anmeckert.
Mit DOM:
$doc = new DOMDocument();
$doc->resolveExternals = true;
$doc->substituteEntities = true;
$ergebnis = $doc->load('test.xml');
...
Mathias