Skip to content

Latest commit

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SimpleXMLMapper

Uses reflection to map XML to PHP objects. Inspired in part by sabre/xml.

Usage Example

<?xml version="1.0" encoding="utf-8"?>
<car>
<manufacturer>
<name>Volkswagen</name>
<founded>1937-01-04 00:00:00</founded>
</manufacturer>
<model>Golf R</model>
<year>2016</year>
<msrp>39995.95</msrp>
<colours>
<colour>Lapiz Blue</colour>
<colour>Oryx White</colour>
</colours>
<options>
<option>
<name>19-inch "Pretoria" Wheels</name>
</option>
<option>
<name>Technology Package</name>
</option>
</options>
<hybrid>false</hybrid>
<awd>true</awd>
</car>
useDateTime;
useSimpleXMLElement;
useSimpleXmlMapper\XmlMapper;
useSymfony\Component\PropertyInfo\PropertyInfoExtractor;
useSymfony\Component\PropertyInfo\Extractor\PhpDocExtractor;
useSymfony\Component\PropertyInfo\Extractor\ReflectionExtractor;
class Car
{
/** * @var Manufacturer */public$manufacturer;
/** * @var string */public$model;
/** * @var int */public$year;
/** * @var float */public$msrp;
/** * @var array */public$colours = [];
/** * @var Option[] */public$options = [];
/** * @var bool */public$hybrid;
/** * @var bool */public$awd;
}
class Manufacturer
{
/** * @var string */public$name;
/** * @var DateTime */public$founded;
}
class Option
{
/** * @var string */public$name;
}
$listExtractors = [newReflectionExtractor];
$typeExtractors = [newPhpDocExtractor];
$extractor = newPropertyInfoExtractor($listExtractors, $typeExtractors);
$mapper = newXmlMapper($extractor);
$mapper->addType(DateTime::class, function ($xml) {
return DateTime::createFromFormat('Y-m-d H:i:s', $xml);
});
$xml = newSimpleXMLElement(file_get_contents('car.xml'));
$car = $mapper->map($xml, Car::class);

About

Uses reflection to map XML to PHP objects.

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages