DOMDocument->load() liest DTD nicht
Leeloo5E
- php
Hallo,
Ich rufe mit DOMDocument->load() eine XML-Datei auf. Darin ist eine DTD angegeben. Scheinbar liest er diese aber nicht ein. In der DTD sind auch diverse Entities definiert, wie z.B. <!ENTITY nbsp " "> oder auch <!ENTITY Auml "Ä">. Wenn das XML dann aber über diese verfügt, also oder Ä vorkommen, schmeißt mir PHP eine Warnmeldung aus:
Warning: DOMDocument::load() [function.DOMDocument-load]: Entity 'Auml' not defined in test.xml, line: 12 in test.php on line 372
Wenn diese Entities direkt in die XML-Datei geschrieben werden, also so:
<!DOCTYPE article SYSTEM "sdocbook.dtd" [
<!ENTITY nbsp " " >
<!ENTITY Auml "Ä" >
]>
Gibt es keine Warnung. Bei zwei oder drei zu definierenden Entities mag es noch übersichtlich sein. Es gibt jedoch eine Menge zu definierten. Deshalb wäre es schön, wenn DOMDocument die DTD auch wirklich lesen würde. Gibts da ne Möglichkeit das anzugeben? Unter den DOMDocument-Funktionen hab ich leider keine passende gefunden. Ich suche aber weiter.
Vielen Dank.
Gruß,
Leeloo
n'abend,
Unter den DOMDocument-Funktionen hab ich leider keine passende gefunden. Ich suche aber weiter.
ohne mich je mit DOM in PHP beschäftigt und ca. 3 Minuten im Manual geschaut zu haben, stolperte ich über Eigenschaften von DOMDocument
welches vermuten lässt, dass dein Vorhaben durch setzen des Parameters «resolveExternals» ermöglicht wird:
<?php
$doc = new DOMDocument();
// hier sagen wir dem document, dass es doch bitte die Entities aus der DTD laden soll
$doc->resolveExternals = true;
$doc->load('book.xml');
echo $doc->saveXML();
?>
weiterhin schönen abend...
Hallo,
Unter den DOMDocument-Funktionen hab ich leider keine passende gefunden. Ich suche aber weiter.
ohne mich je mit DOM in PHP beschäftigt und ca. 3 Minuten im Manual geschaut zu haben, stolperte ich über Eigenschaften von DOMDocument
Genau das wars. Ich hab nach Funktionen gesucht und bin dabei leider nicht über die Eigenschaften gestolpert und auch nicht über «resolveExternals».
Sorry, für meine Dummheit. Ich hab wohl mehr als 3 Minuten gebraucht ;-(
Gruß,
Leeloo
n'abend,
Sorry, für meine Dummheit. Ich hab wohl mehr als 3 Minuten gebraucht ;-(
das hat reichlich wenig mit Dummheit zu tun. Es kommt nur drauf an, wie gut du dich in der Referenz zurecht findest. Mir passiert deine "Dummheit" regelmäßig in der JavaDoc, also halb so wild ;)
weiterhin schönen abend...