PHP : Objects and XML

on

Just some nice example to show how to create an XML output from an object. And also create an object from an XML source.

Do be able to run those example, you must install the PEAR packages called XML/Serializer.

First example, creation of the XML output:

<?php
require_once 'XML/Serializer.php';
// object definition
class Automobile
{
 // object properties
 public $color;
 public $year;
 public $model;
 function setAttributes($c, $y, $m)
 {
   $this->color = $c;
   $this->year = $y;
   $this->model = $m;
 }
 function xmlSerializeMe()
 {
   $serializer = new XML_Serializer();
   // add XML declaration
   $serializer->setOption("addDecl", true);
   // indent elements
   $serializer->setOption("indent", "   ");
   // set name for root element
   $serializer->setOption("rootName", get_class($this));
   // perform serialization
   $serializer->serialize($this);
   return $serializer;
 }
}
// create object to be serialized
$car = new Automobile();
$car->setAttributes("blue", 1982, "Mustang");
$result=$car->xmlSerializeMe();
echo $result->getSerializedData();
?>

Result :

<?xml version="1.0"?>
<Automobile>
   <color>blue</color>
   <year>1982</year>
   <model>Mustang</model>
</Automobile>

Second example, creation of an object from the XML source:

<?php
require_once 'XML/Serializer.php';
require_once 'XML/Unserializer.php';
$xml_doc = <<<EOF
<?xml version="1.0"?>
<Automobile>
   <color>blue</color>
   <year>1982</year>
   <model>Mustang</model>
</Automobile>
EOF;
// object definition
class Automobile
{
 // object properties
 public $color;
 public $year;
 public $model;
 function setAttributes($c, $y, $m)
 {
   $this->color = $c;
   $this->year = $y;
   $this->model = $m;
 }
 function xmlSerializeMe()
 {
   $serializer = new XML_Serializer();
   // add XML declaration
   $serializer->setOption("addDecl", true);
   // indent elements
   $serializer->setOption("indent", "   ");
   // set name for root element
   $serializer->setOption("rootName", get_class($this));
   // perform serialization
   $serializer->serialize($this);
   return $serializer;
 }
}
$unserializer = new XML_Unserializer();
$unserializer->setOption('complexType', 'object');
$unserializer->unserialize($xml_doc);
$car = $unserializer->getUnserializedData();
echo "<pre>";
print_r($car);
echo "</pre>";
?>

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

recent

Last Tweets

  • RT : 昨年開催されたOracle MySQL Innovation Day 2018 秋の模様がEnterpriseZineのDB Onlineに掲載されました / MySQL 8.0の新機能から寿司ビール問題まで――Oracle MySQL Innovation Day 2018 秋 via ,
  • If you have a ticket for the pre-FOSDEM Day and you are not able to join, please release your ticket, there are people on the waiting list ! Thank you in advance ! ,
  • When your laptop dies just before 2 weeks of conferences... ,
  • RT : EVENTS:  MySQL Day, Denver, CO Forget Skiing. On Tuesday, January 29, 2019 Denver is all about NoSQL + SQL = MySQL. Join us to learn about NoSQL+SQL, plus how to improve your database performance, secure your data and prevent downtime. Register today! ,
  • RT : MySQL is ubiquitious for cloud usage. In this series I will explore Oracle Cloud's IaaS offerings that support MySQL. In this particular post I will highlight IaaS Enterprise capabilities that help secure our cloud perimiter. ,
Locations of visitors to this page
categories