Skip to content

pravednik/xmlBundle

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Build Status SensioLabsInsight Latest Stable Version License Total Downloads

XML Builder/Reader Bundle for Symfony2

Installation

Using composer

Add desperado/xml-bundle to your composer.json file.

     "require": {
	     "desperado/xml-bundle": "dev-master"
     }

The next thing you should do is install the bundle by executing the following command:

php composer.phar update desperado/xml-bundle

Finally, add the bundle to the registerBundles function of the AppKernel class in the app/AppKernel.php file:

public function registerBundles()
{
    $bundles = array(
        ...
        new Desperado\XmlBundle\DesperadoXmlBundle,
        ...
    );

Usage

DIC

  • XmlEditor: desperado_xml.model.xml_editor
  • XmlGenerator: desperado_xml.model.xml_generator
  • XmlReader: desperado_xml.model.xml_reader
  • XmlPrepare: desperado_xml.model.xml_prepare

Create xml from array

<?php

use Desperado\XmlBundle\Model\XmlGenerator;

$params = [
            'Request' => [
                '@ns'               => [
                    '0_xmlns' => ['prefix' => 'xsi', 'uri' => 'http//www.w3.org/2001/XMLSchema-instance'],
                    '1_xmlns' => ['prefix' => 'xsd', 'uri' => 'http//www.w3.org/2001/XMLSchema'],
                ],
                '@attrib'           => [
                    'Id'      => 100,
                    'Service' => 200,
                    'xmlns'   => 'http://ekassir.com/ekassir/PaySystem/Server/eKassirV3Protocol'
                ],
                'PaymentParameters' => [
                    '@attrib'   => ['xmlns' => ''],
                    'Parameter' => [
                        '@attrib' => ['Name' => 'account'],
                        '@value'  => 'emptyAccount'
                    ]

                ]
            ]
        ];


        $xmlGenerator = new XmlGenerator;

        echo $xmlGenerator->generateFromArray($params);

prints:

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:xsi="http//www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http//www.w3.org/2001/XMLSchema">
  <Request xmlns="http://ekassir.com/ekassir/PaySystem/Server/eKassirV3Protocol" xmlns:xsi="http//www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http//www.w3.org/2001/XMLSchema" Id="100" Service="200" xsi:xmlns="" xsd:xmlns="">
    <PaymentParameters xmlns="">
      <Parameter Name="account">emptyAccount</Parameter>
    </PaymentParameters>
  </Request>
</root>

Create XML without attributes, namespaces, etc.

<?php

use Desperado\XmlBundle\Model\XmlPrepare;
use Desperado\XmlBundle\Model\XmlGenerator;

        $params = [
            'Details' => [
                'PaymentParameters' => [
                    'first_node'  => 'first_node_value',
                    'second_node' => 'second_node_value'
                ]
            ]
        ];


        $xmlPrepare = new XmlPrepare;
        $xmlGenerator = new XmlGenerator;

        echo $xmlGenerator->setRootName('request')->generateFromArray($xmlPrepare->prepareArrayBeforeToXmlConvert($params));

prints:

<?xml version="1.0" encoding="UTF-8"?>
<request>
  <Details>
    <PaymentParameters>
      <first_node>first_node_value</first_node>
      <second_node>second_node_value</second_node>
    </PaymentParameters>
  </Details>
</request>

Parse XML without attributes, namespaces, etc.

<?php

use Desperado\XmlBundle\Model\XmlReader;

        $xmlString = '<?xml version="1.0" encoding="UTF-8"?>
                      <request>
                          <Details>
                              <PaymentParameters>
                                  <first_node>first_node_value</first_node>
                                  <second_node>second_node_value</second_node>
                              </PaymentParameters>
                          </Details>
                      </request>';

        $xmlReader = new XmlReader;

        print_r($xmlReader->processConvert($xmlString));

prints:

Array
(
    [Details] => Array
        (
            [PaymentParameters] => Array
                (
                    [first_node] => first_node_value
                    [second_node] => second_node_value
                )

        )

)