ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
535
535
EMPFEHLEN
-
Hallo,
ich denke, dies ist ein PHP Problem. Ich bastle ein XML um es auf einen Webserver zu schieben. Der Client (in Delphi.net) schreibt in einen Stream und auf einem Webserver soll PHP die Daten auffangen.
Mein XML:
Mein PHP Code:PHP-Code:<?xml version="1.0" encoding="charset=ISO-8859-1"?>
<EnvCrypt xmlns="http://192.168.0.203/EnvisysWebService/Server/envisys.xsd">
<Info>Register</Info>
<Version>1.0</Version>
<Data>Datenklumpen#/?-0</Data>
</EnvCrypt>
und in einer ausgelagerten Datei:PHP-Code:<?php
header("Content-type: text/plain");
include("lib/serverlib_registrierung.php");
// Aufbereiten
foreach($_POST as $k=>$v) $Inhalt = $k.$v;
if (get_magic_quotes_gpc())
{
$Inhalt = stripslashes($Inhalt);
}
$Inhalt = str_replace("_"," ", $Inhalt);
// In eine Datei
$text=$Inhalt;
$fp = fopen ("test.txt" , "a+"); // Datei öffnen
fwrite ($fp , $text); // Datei-Inhalt in die Datei schreiben
fclose ($fp); // Datei schließen
// XML
$XMLPars = new Registrierung($Inhalt);
?>
Nun erhalte ich im Client folgende Fehlermeldung:PHP-Code:<?php
header("Content-type: text/plain");
//include("lib/serverlib_db.php");
class Registrierung
{
private $xml;
public function Registrierung($temp)
{
$xml = simplexml_load_string($temp);
}
public function ExecuteReg()
{
$db = new DBAccess($this->xml);
$db->Registration();
// TODO: Weiter
}
}
?>
Sicherheitshalber, habe ich mir (siehe oben) die POST Variable, nachdem ich sie umgeformt habe nochmal in eine Datei geschrieben (Orginal aus dem PHP file, kurz vor dem Aufruf der SimpleXMLElement Instanzierung):OK<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: Entity: line 1: parser error : expected '=' in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: <?xml version"1.0" encoding="charset=ISO-8859-1"?> in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: ^ in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: Entity: line 1: parser error : Malformed declaration expecting version in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: <?xml version"1.0" encoding="charset=ISO-8859-1"?> in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: ^ in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: Entity: line 1: parser error : Blank needed here in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: <?xml version"1.0" encoding="charset=ISO-8859-1"?> in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: ^ in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: Entity: line 1: parser error : parsing XML declaration: '?>' expected in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: <?xml version"1.0" encoding="charset=ISO-8859-1"?> in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: ^ in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
<?xml version"1.0" encoding="charset=ISO-8859-1"?>
<EnvCrypt xmlns="http://192.168.0.203/EnvisysWebService/Server/envisys.xsd">
<Info>Register</Info>
<Version>1.0</Version>
<Data>Datenklumpen#/?-0</Data>
</EnvCrypt>
Eigentlich sollte mein Problem trival sein. Ich bekomme über POST einen Datenhaufen, den ich untersuchen möchte und dann als STRING in ein SimpleXMLElement Stopfen. Dies sollte eigentlich so gehen:
$xml = new SimpleXMLElement($xmlstr);
Aber seit 3 Tagen ärgere ich mich mit diesen Sch .... rum. Wäre über Hilfe in PHP sehr dankbar.
Chris
-
Das „charset=“ hat im encoding-Attributwert auch nichts zu suchen. Entferne das erst mal.
Markus Wulftange
-
Huch!? Wie kam das dorthin! Ich hab diesen Teil mir viel zu oft schon angesehen.
Zitat von Gumbo
So nun siehts so aus (Kopie des POST Inhaltes aus der server.php, bevor es an SimpleXml Element gegeben wird
Fehler:<?xml version"1.0" encoding="utf-8"?>
<EnvCrypt xmlns="http://192.168.0.203/EnvisysWebService/Server/envisys.xsd">
<Info>IIII</Info>
<Version>AAAA</Version>
<Data>BBBB</Data>
</EnvCrypt>
So wies aussieht, ist er mit dem String immer nich nicht zufriedenOK<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: Entity: line 1: parser error : expected '=' in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: <?xml version"1.0" encoding="utf-8"?> in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: ^ in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: Entity: line 1: parser error : Malformed declaration expecting version in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: <?xml version"1.0" encoding="utf-8"?> in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: ^ in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: Entity: line 1: parser error : Blank needed here in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: <?xml version"1.0" encoding="utf-8"?> in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: ^ in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: Entity: line 1: parser error : parsing XML declaration: '?>' expected in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: <?xml version"1.0" encoding="utf-8"?> in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: simplexml_load_string() [<a href='function.simplexml-load-string'>function.simplexml-load-string</a>]: ^ in <b>C:\wamp\www\EnvisysWebService\Server\lib\serverlib_registrierung.php</b> on line <b>19</b><br />
-
Es fehlt auch noch ein Gleichheitszeichen zwischen „version“ und „"1.0"“.
Markus Wulftange
-
Das stimmt, aber wieso verschwindet "es"?
Das ist doch sehr merkwürdig.
Oft ist auch bei "<?XML version" ein Unterstrich, also so "<?XML_version" . Das habe ich mit
erschlagen. Aber schick ist das nicht. Mich interssiert das Warum!PHP-Code:$Inhalt = str_replace("_"," ", $Inhalt);
Ich habe den String, den ich Speichere (Logdatei) mal direkt genommen und in PHP direkt eingeben:
... und siehe da - es geht. Es MUSS mit dem Encoding zu tun haben.PHP-Code:$Inhalt = <<<XML
<?xml version='1.0' standalone='yes'?>
<EnvCrypt xmlns='http://192.168.0.203/EnvisysWebService/Server/envisys.xsd'>
<Info>IIII</Info>
<Version>AAAA</Version>
<Data>BBBB</Data>
</EnvCrypt>
XML;
Chris
-
Die Angabe der Zeichenkodierung ist nur dann notwendig, wenn sie nicht UTF-8 oder UTF-16 entspricht. Denn dies ist die Standardkodierung für XML. Ich weiß allerdings nicht, ob SimpleXML dies überhaupt berücksichtigt.
Markus Wulftange
-
Hallo,
ich habe noch ein wenige rumexperimentiert. Unter anderem habe ich den STREAM direkt nach dem Empfangen in POST untersucht und nach der Behandlung (siehe oben).
PHP macht folgendes:
Es haut mir einen Unterstrich in den XML Tag, maskiert " mit / und löscht einige =
Nun meine Frage, wie bekomme ich PHP dazu, meinen Datenstream so darzustellen, dass er unverändert ankommt?
Hier im Forum gibt es mit Umlauten und dem Fileload einen ganz ähnlichen Thread ...
Chris
Ähnliche Themen
-
[Delphi] Memo mit Delphi-Code ?
Von mmuhbllaaa im Forum Delphi, Kylix, PascalAntworten: 1Letzter Beitrag: 16.08.10, 06:15 -
Delphi
Von visualwebarts im Forum FotografieAntworten: 1Letzter Beitrag: 02.04.07, 12:07 -
Umwandlung von Delphi nach C++
Von polj im Forum C/C++Antworten: 20Letzter Beitrag: 24.06.05, 12:47 -
Delphi 2005 Personal (Delphi 9)
Von Hinterwäldler im Forum Delphi, Kylix, PascalAntworten: 1Letzter Beitrag: 16.05.05, 20:56 -
Delphi 5 Projekte in Delphi 3 importiern
Von NIC140903 im Forum Delphi, Kylix, PascalAntworten: 1Letzter Beitrag: 16.09.02, 23:30





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren