On this page
Class Xml
XML handling for CakePHP.
The methods in these classes enable the datasources that use XML to work.
Method Detail
_createChildsource protected static
_createChild( array $data )Helper to _fromArray(). It will create childs of arrays
Parameters
- 
     array $data
- Array with informations to create childs
_fromArraysource protected static
_fromArray( DOMDocument $dom , DOMElement $node , array $data , string $format )Recursive method to create childs from array
Parameters
- 
     DOMDocument $dom
- Handler to DOMDocument
- 
     DOMElement $node
- Handler to DOMElement (child)
- 
     array $data
- Array of data to append to the $node.
- 
     string $format
- Either 'attributes' or 'tags'. This determines where nested keys go.
Throws
Cake\Utility\Exception\XmlException\Cake\Utility\Exception\XmlException
_loadXmlsource protected static
_loadXml( string $input , array $options )Parse the input data and create either a SimpleXmlElement object or a DOMDocument.
Parameters
- 
     string $input
- The input to load.
- 
     array $options
- The options to use. See Xml::build()
Returns
SimpleXmlElement|DOMDocument\SimpleXmlElement|\DOMDocument
Throws
Cake\Utility\Exception\XmlException\Cake\Utility\Exception\XmlException
_toArraysource protected static
_toArray( SimpleXMLElement $xml , array $parentData , string $ns , array $namespaces )Recursive method to toArray
Parameters
- 
     SimpleXMLElement $xml
- SimpleXMLElement object
- 
     array $parentData
- Parent array with data
- 
     string $ns
- Namespace of current child
- 
     array $namespaces
- List of namespaces in XML
buildsource public static
build( string|array $input , array $options [] )Initialize SimpleXMLElement or DOMDocument from a given XML string, file path, URL or array.
Usage:
Building XML from a string:
$xml = Xml::build('<example>text</example>');
Building XML from string (output DOMDocument):
$xml = Xml::build('<example>text</example>', ['return' => 'domdocument']);
Building XML from a file path:
$xml = Xml::build('/path/to/an/xml/file.xml');
Building XML from a remote URL:
use Cake\Network\Http\Client;
$http = new Client();
$response = $http->get('http://example.com/example.xml');
$xml = Xml::build($response->body());
Building from an array:
 $value = [
     'tags' => [
         'tag' => [
             [
                 'id' => '1',
                 'name' => 'defect'
             ],
             [
                 'id' => '2',
                 'name' => 'enhancement'
             ]
         ]
     ]
 ];
$xml = Xml::build($value);
When building XML from an array ensure that there is only one top level element.
Options
- returnCan be 'simplexml' to return object of SimpleXMLElement or 'domdocument' to return DOMDocument.
- loadEntitiesDefaults to false. Set to true to enable loading of- <!ENTITYdefinitions. This is disabled by default for security reasons.
- readFileSet to false to disable file reading. This is important to disable when putting user data into Xml::build(). If enabled local files will be read if they exist. Defaults to true for backwards compatibility reasons.
- If using array as input, you can pass optionsfrom Xml::fromArray.
Parameters
- 
     string|array $input
- XML string, a path to a file, a URL or an array
- 
     array $optionsoptional []
- The options to use
Returns
SimpleXMLElement|DOMDocumentSimpleXMLElement or DOMDocument
Throws
Cake\Utility\Exception\XmlException\Cake\Utility\Exception\XmlException
fromArraysource public static
fromArray( array|Cake\Collection\Collection $input , string|array $options [] )Transform an array into a SimpleXMLElement
Options
- formatIf create childs ('tags') or attributes ('attributes').
- prettyReturns formatted Xml when set to- true. Defaults to- false
- versionVersion of XML document. Default is 1.0.
- encodingEncoding of XML document. If null remove from XML header. Default is the some of application.
- returnIf return object of SimpleXMLElement ('simplexml') or DOMDocument ('domdocument'). Default is SimpleXMLElement.
Using the following data:
$value = [
   'root' => [
       'tag' => [
           'id' => 1,
           'value' => 'defect',
           '@' => 'description'
        ]
    ]
];
Calling Xml::fromArray($value, 'tags'); Will generate:
<root><tag><id>1</id><value>defect</value>description</tag></root>
And calling Xml::fromArray($value, 'attributes'); Will generate:
<root><tag id="1" value="defect">description</tag></root>
Parameters
- 
     array|Cake\Collection\Collection$input
- Array with data or a collection instance.
- 
     string|array $optionsoptional []
- The options to use or a string to use as format.
Returns
SimpleXMLElement|DOMDocumentSimpleXMLElement or DOMDocument
Throws
Cake\Utility\Exception\XmlException\Cake\Utility\Exception\XmlException
toArraysource public static
toArray( SimpleXMLElement|DOMDocument|DOMNode $obj )Returns this XML structure as an array.
Parameters
- 
     SimpleXMLElement|DOMDocument|DOMNode $obj
- SimpleXMLElement, DOMDocument or DOMNode instance
Returns
arrayArray representation of the XML structure.
Throws
Cake\Utility\Exception\XmlException\Cake\Utility\Exception\XmlException
© 2005–2016 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
 http://api.cakephp.org/3.1/class-Cake.Utility.Xml.html