Christian S.: XML-File in Objekt deserialisieren

Hallo,

ich würde gerne eine XML Datei in ein PHP Objekt deserialisieren.

Wie ist das möglich? Wenn ich google, finde ich immer nur Java oder C# bezogene Themen.

Gruß!

  1. Hallo Christian,

    ich würde gerne eine XML Datei in ein PHP Objekt deserialisieren.
    Wie ist das möglich?

    suchst Du simplexml_load_file()?

    Wenn ich google, finde ich immer nur Java oder C# bezogene Themen.

    Ich schaue zuerst in Handbüchern nach, bevor ich $suchmaschine befrage.

    Freundliche Grüße

    Vinzenz

    1. Hi,

      suchst Du simplexml_load_file()?

      Ganz genau..

      Etwas komischer Name halt...

      Ich hätte jetzt eher sowas erwartet wie:

      $serializer = new XmlSerializer();
      $obj = $serializer->deserialize('file.xml');

      Naja..

      Nur noch eins:

      Wenn ich Umlaute zwischen meinen Xml Tags hab, dann krachts...

      parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xF6 0x6E 0x65 0x20 in

      Aber Umlaute gehören doch zu UTF-8 !?

      Gebe ich im XML File stattdessen
      <?xml version="1.0" encoding="ISO-8859-1" ?>

      an, dann klappt es zwar, aber aus den Umlauten wird ein ganz komisches Zeichen, bzw. mehrere... auch im Quelltext.

      Wie umschifft man sowas?

      Gruß!

      1. echo $begrüßung;

        Wenn ich Umlaute zwischen meinen Xml Tags hab, dann krachts...
        parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xF6 0x6E 0x65 0x20 in
        Aber Umlaute gehören doch zu UTF-8 !?

        Natürlich, kodiere deine Zeichen gemäß UTF-8 und nicht ISO-8859-1, wenn du die XML-Datei als UTF-8-kodiert deklarierst oder keine Angaben machst, was dann per default UTF-8 heißt.

        Gebe ich im XML File stattdessen
        <?xml version="1.0" encoding="ISO-8859-1" ?>

        Das ist eine Alternative. ISO-8859-1 verwenden und als ISO-8859-1 deklarieren.

        an, dann klappt es zwar, aber aus den Umlauten wird ein ganz komisches Zeichen, bzw. mehrere... auch im Quelltext.

        Ja, das haben alle XML-Verarbeiter so an sich. Sie arbeiten intern mit UTF-8.

        Wie umschifft man sowas?

        Die Ausgabekodierung lässt sich nach meinem Wissen bei SimpleXML nicht einstellen. Entweder du stellst dich komplett auf UTF-8 um oder kodierst dir die Ausgabe so um, wie du sie gern hättest.

        echo "$verabschiedung $name";