tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
535
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    XChris XChris ist offline Mitglied Brokat
    Registriert seit
    Sep 2003
    Ort
    Weimar
    Beiträge
    373
    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:
    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>
    Mein PHP Code:
    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);
    ?>
    und in einer ausgelagerten Datei:

    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
        
    }    
    }

    ?>
    Nun erhalte ich im Client folgende Fehlermeldung:

    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>]: &lt;?xml version&quot;1.0&quot; encoding=&quot;charset=ISO-8859-1&quot;?&gt; 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>]: &lt;?xml version&quot;1.0&quot; encoding=&quot;charset=ISO-8859-1&quot;?&gt; 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>]: &lt;?xml version&quot;1.0&quot; encoding=&quot;charset=ISO-8859-1&quot;?&gt; 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: '?&gt;' 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>]: &lt;?xml version&quot;1.0&quot; encoding=&quot;charset=ISO-8859-1&quot;?&gt; 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 />
    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):

    <?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
     

  2. #2
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Das „charset=“ hat im encoding-Attributwert auch nichts zu suchen. Entferne das erst mal.
     
    Markus Wulftange

  3. #3
    XChris XChris ist offline Mitglied Brokat
    Registriert seit
    Sep 2003
    Ort
    Weimar
    Beiträge
    373
    Zitat Zitat von Gumbo
    Das „charset=“ hat im encoding-Attributwert auch nichts zu suchen. Entferne das erst mal.
    Huch!? Wie kam das dorthin! Ich hab diesen Teil mir viel zu oft schon angesehen.
    So nun siehts so aus (Kopie des POST Inhaltes aus der server.php, bevor es an SimpleXml Element gegeben wird

    <?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>
    Fehler:

    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>]: &lt;?xml version&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; 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>]: &lt;?xml version&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; 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>]: &lt;?xml version&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; 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: '?&gt;' 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>]: &lt;?xml version&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; 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 />
    So wies aussieht, ist er mit dem String immer nich nicht zufrieden
     

  4. #4
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Es fehlt auch noch ein Gleichheitszeichen zwischen „version“ und „"1.0"“.
     
    Markus Wulftange

  5. #5
    XChris XChris ist offline Mitglied Brokat
    Registriert seit
    Sep 2003
    Ort
    Weimar
    Beiträge
    373
    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

    PHP-Code:
    $Inhalt str_replace("_"," "$Inhalt); 
    erschlagen. Aber schick ist das nicht. Mich interssiert das Warum!

    Ich habe den String, den ich Speichere (Logdatei) mal direkt genommen und in PHP direkt eingeben:

    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;
    ... und siehe da - es geht. Es MUSS mit dem Encoding zu tun haben.

    Chris
     

  6. #6
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    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

  7. #7
    XChris XChris ist offline Mitglied Brokat
    Registriert seit
    Sep 2003
    Ort
    Weimar
    Beiträge
    373
    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

  1. [Delphi] Memo mit Delphi-Code ?
    Von mmuhbllaaa im Forum Delphi, Kylix, Pascal
    Antworten: 1
    Letzter Beitrag: 16.08.10, 06:15
  2. Delphi
    Von visualwebarts im Forum Fotografie
    Antworten: 1
    Letzter Beitrag: 02.04.07, 12:07
  3. Umwandlung von Delphi nach C++
    Von polj im Forum C/C++
    Antworten: 20
    Letzter Beitrag: 24.06.05, 12:47
  4. Delphi 2005 Personal (Delphi 9)
    Von Hinterwäldler im Forum Delphi, Kylix, Pascal
    Antworten: 1
    Letzter Beitrag: 16.05.05, 20:56
  5. Delphi 5 Projekte in Delphi 3 importiern
    Von NIC140903 im Forum Delphi, Kylix, Pascal
    Antworten: 1
    Letzter Beitrag: 16.09.02, 23:30