PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : **DOM**->loadXML(); schwaetzt auf stdout



herweb
03-09-2007, 19:45
Hallo,

ich habe da so ein Problem mit

php **DOM**->loadXML( '<aaa>bbb</aaa>' );

Ich bin auf PHP 5, mit fast_cgi, mit DOM XML 6.2.

Eigentlich ganz einfach. Leider kopiert sich der Text mitten hinein in den anderen <html>text</html> der da noch ist, auf meiner Seite. Also das ***->loadXML( '<aaa>bbb</aaa>' ); erzeugt immer eine Kopie auf STDOUT, genauer:

<aaa>bbb</aaa>

mitten hinein, gerade da, wo es aufgerufen wird. Ich habe schon probiert mit ob_start(), ob_clean() etc das Zeug zu bunkern und wegzuwerfen. Das error_reporting() ist auch abgestellt. Das klappt alles nicht. Die anderen DOMtom tun ganz gut, die Ergebnisse zu dem speziellen XML sind ansonsten richtig.

Hat da wer eine Idee wie man dem **DOM**->loadXML() das STDOUT abgewoehnt?

Gruss

undefined
04-09-2007, 02:33
Also ich kann deine Beschreibung nicht ganz nach vollziehen.
Etwas Code würde mehr aussage schaffen.
Im grunde erzeugt $dom->loadXML( $STRING ); (http://www.php.net/manual/de/function.dom-domdocument-loadxml.php) keine Ausgabe.

herweb
04-09-2007, 08:37
Hallo,

ich habe das problem reduziert auf dieses ->loadXML();

Es geschieht wirklich innerhalb des ->loadXML(); Das zu untersuchende XML wird als Kopie auf STDOUT kopiert uns stoert.

Es gibt sonst kein print() in dem prg. Irgendwo gibt es bestimmt einen Schalter, wie
libxml_use_internal_errors( true );
oder so, den ich aber noch nicht entdeckt habe.
Gruss

Turbohummel
04-09-2007, 18:40
STDOUT? Wir reden hier schon von PHP? Das kenne ich nämlich nur von Smalltalk.

undefined
05-09-2007, 05:11
STDOUT? Wir reden hier schon von PHP? Das kenne ich nämlich nur von Smalltalk.
Für PHPprogger etwas unbekannt aber durchaus geläufiger Ausdruck ;)


stdin (0)
Der Eingabe-Kanal, ist normalerweise verbunden mit dem Terminal, d.h.
Eingaben ueber Tastatur können vom Prozeß von hier gelesen werden.

stdout (1)
Der Ausgabe-Kanal. Alle normalen Ausgaben, z.B. mit printf in C oder echo von einer Shell
aus werden hier ausgegeben. Dieser Kanal ist normalerweise mit dem Terminal verbunden,
d.h. die Ausgaben landen auf dem Bildschirm.

stderr (2)
Der Fehler-Ausgabe-Kanal. Alle Fehlermeldungen werden hier rausgeschrieben.
Dieser Kanal ist standardmäßig mit dem gleichen Device wie stdout verbunden,
d.h. auch diese Ausgaben landen auf dem Terminal.
Der Vorteil der Trennung liegt jedoch darin, daß z.B. bei Umlenkung der Ausgabe
eines Prozesses die Fehlermeldungen trotzdem am Terminal zu lesen sind bzw.
diese nicht die Datei verschandeln.

herweb
06-09-2007, 08:38
Hallo,
sorry,

die Angelegenheit hat sich erledigt. Es war nicht das loadXML(), sondern das

require('wzegfz.XML')

eine Zeile darueber. Da der dateiname *.XML lautet, hat das php ein include/printf() daraus gemacht.

Gruss