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;
}