PHP code example of zamaldev / xml-model
1. Go to this page and download the library: Download zamaldev/xml-model library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
zamaldev / xml-model example snippets
use Zamaldev\XmlModel\XmlModel;
$key;
public int $key2;
}
$parser = new XmlModel();
$data = <<<XML
<xml>
<key>value</key>
<key2>2</key2>
</xml>
XML;
$model = $parser->parse($data, Model::class);
echo $model->key; // "value"
echo $model->key2; // 2
use Zamaldev\XmlModel\Attributes\Map;
use Zamaldev\XmlModel\XmlModel;
#[Map(name: 'key2')]
public int $int;
}
$parser = new XmlModel();
$data = <<<XML
<xml>
<key>value</key>
<key2>2</key2>
</xml>
XML;
$model = $parser->parse($data, Model::class);
echo $model->string; // "value"
echo $model->int; // 2
use Zamaldev\XmlModel\Attributes\AsArray;
use Zamaldev\XmlModel\Attributes\Map;
use Zamaldev\XmlModel\XmlModel;
*/
#[AsArray(itemType: Model::class)]
public array $item = [];
}
$parser = new XmlModel();
$data = <<<XML
<xml>
<item level="1">
<item level="2">
<item level="3"/>
<item level="3"/>
<item level="3"/>
</item>
<item level="2">
<item level="3"/>
<item level="3"/>
<item level="3"/>
</item>
</item>
</xml>
XML;
$model = $parser->parse($data, Model::class);
echo $model->item[0]->level; // "1"
echo $model->item[0]->item[0]->level; // "2"
echo $model->item[0]->item[0]->item[0]->level; // "3"
use Zamaldev\XmlModel\Attributes\Caster;
use Zamaldev\XmlModel\XmlModel;
use Zamaldev\XmlModel\XmlModelInterface;
Interface $xmlModel, mixed $value): mixed
{
/** @var SimpleXMLElement $value */
// Here will be your logic.
if (count($value) > 1) {
return (array) $value;
}
if (count($value->children()) > 0) {
return $xmlModel->parse($value, Model::class);
}
return (string) $value;
}
}
class Model {
#[CustomCaster]
public self|string|array $result;
}
$parser = new XmlModel();
$data = <<<XML
<xml>
<result>1</result>
<result>2</result>
<result>3</result>
</xml>
XML;
$model = $parser->parse($data, Model::class);
echo $model->result[0]; // "1"
echo $model->result[1]; // "2"
echo $model->result[2]; // "3"
$data = <<<XML
<xml>
<result>1</result>
</xml>
XML;
$model = $parser->parse($data, Model::class);
echo $model->result; // "1"
$data = <<<XML
<xml>
<result>
<result>1</result>
</result>
</xml>
XML;
$model = $parser->parse($data, Model::class);
echo $model->result->result; // "1"
use Zamaldev\XmlModel\Attributes\SimpleSanitizer;
use Zamaldev\XmlModel\XmlModel;
#[SimpleSanitizer('ucfirst')]
public string $result;
}
$parser = new XmlModel();
$data = <<<XML
<xml>
<result> vAlUe </result>
</xml>
XML;
$model = $parser->parse($data, Model::class);
echo $model->result; // "Value"
use Zamaldev\XmlModel\XmlGenerator;
ncoding="UTF-8" standalone="yes"
// Demo.php
declare(strict_types=1);
namespace Demo;
use Zamaldev\XmlModel\Attributes\AsArray;
class Demo
{
/**
* @var array<DemoKey> $key
*/
#[AsArray(itemType: DemoKey::class)]
public array $key = [];
}
// DemoKey.php
declare(strict_types=1);
namespace Demo;
use Zamaldev\XmlModel\Attributes\AsArray;
use Zamaldev\XmlModel\Attributes\Map;
class DemoKey
{
/**
* @var ?string $_id
*/
#[Map(name: '@id')]
public ?string $_id = null;
/**
* @var array<DemoSubkey> $subkey
*/
#[AsArray(itemType: DemoSubkey::class)]
public array $subkey = [];
}
// DemoSubKey.php
declare(strict_types=1);
namespace Demo;
use Zamaldev\XmlModel\Attributes\Map;
class DemoSubkey
{
/**
* @var ?string $_id
*/
#[Map(name: '@id')]
public ?string $_id = null;
/**
* @var ?string $_
*/
#[Map(name: '#')]
public ?string $_ = null;
}