Robin: objekte als xml serialisieren und umgekehrt

Hi@all,

Ich frage mich ob es einen xml-parser gibt, mit dem ich ein php-objekt als xml repräsentieren kann, es abspeichern kann und wieder laden kann. Theoretisch is das ja möglich. Ich bräuchte das um ein sehr großes , bestehendes Objekt quasi von Hand zu editieren.

vielen dank für eure Hilfe,
Robin.

  1. hi,

    Ich frage mich ob es einen xml-parser gibt, mit dem ich ein php-objekt als xml repräsentieren kann, es abspeichern kann und wieder laden kann.

    Mit der SimpleXML-Extension sollte das m.E. auf recht einfache Weise möglich sein.
    Benötigt aber PHP5.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo,

      Danke für deine schnelle reaktion. Leider kann man mit SimpleXML swoeit ich das auf php.net sehen kann nur aus xml objekte erzeugen, ich bräuchte beide wege, um das objekt überhaupt editieren zu können.

      viele grüsse,
      Robin.

      1. hi,

        auch wenn du jetzt von dedlfix schon eine Lösung hast:

        Leider kann man mit SimpleXML swoeit ich das auf php.net sehen kann nur aus xml objekte erzeugen, ich bräuchte beide wege, um das objekt überhaupt editieren zu können.

        Doch, das sollte auch möglich sein:

        simplexml_load_file --  Interprets an XML file into an object
        simplexml_load_string --  Interprets a string of XML into an object

        Mit einem von den beiden erzeugst du dir aus deinen XML-Daten aus einer Datei oder einem String ein Objekt SimpleXMLElement, und mit

        SimpleXMLElement->asXML --  Return a well-formed XML string based on SimpleXML element

        geht's wieder in die andere Richtung, so dass du es wieder in eine Datei speichern kannst.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. echo $begrüßung;

          Leider kann man mit SimpleXML swoeit ich das auf php.net sehen kann nur aus xml objekte erzeugen, ich bräuchte beide wege, um das objekt überhaupt editieren zu können.

          Doch, das sollte auch möglich sein:

          Erlaubst du, dass ich widerspreche?

          simplexml_load_file --  Interprets an XML file into an object
          simplexml_load_string --  Interprets a string of XML into an object

          Das "into an object" ist zu allgemein formuliert. Es müsste noch, wie im Fließtext zu lesen, ein "of class SimpleXMLElement" angefügt werden. So ein SimpleXMLElement lässt sich nicht großartig weiter bearbeiten. Werte lassen sich ändern und Attribute hinzufügen. Das wars dann auch schon.

          (Außerdem macht SimpleXML vom Overloading Gebrauch und das ergibt nette/unangenehme/ungewohnte Effekte:

            
          $string = <<<XML  
          <root>  
            <element>Element1</element>  
            <element>Element2</element>  
          </root>  
          XML;  
            
          $xml = simplexml_load_string($string);  
          print_r($xml);
          

          ergibt

          SimpleXMLElement Object (
            [element] => Array (
                [0] => Element1
                [1] => Element2
              )
          )

          Und wenn du jetzt denkst, print_r($xml->element) zeigt ein Array, dann hast du dich geirrt. Doch das sei nur mal so nebenbei erwähnt.)

          Mit einem von den beiden erzeugst du dir aus deinen XML-Daten aus einer Datei oder einem String ein Objekt SimpleXMLElement, und mit

          SimpleXMLElement->asXML --  Return a well-formed XML string based on SimpleXML element

          geht's wieder in die andere Richtung, so dass du es wieder in eine Datei speichern kannst.

          Gesucht war, ein beliebiges Objekt nach XML und wieder zurück zu wandeln. Dabei hilft SimpleXML nicht.

          echo "$verabschiedung $name";

  2. echo $begrüßung;

    Ich frage mich ob es einen xml-parser gibt, mit dem ich ein php-objekt als xml repräsentieren kann, es abspeichern kann und wieder laden kann.

    Es gibt in PEAR ein Paket namens XML_Serializer, das das kann.

    echo "$verabschiedung $name";

    1. Hallo,

      Es gibt in PEAR ein Paket namens XML_Serializer, das das kann.

      Das ist genau das was ich gesucht habe. Du hast mir wirklich sehr geholfen mit deinem Hint, vielen Dank!

      cya, Robin.