Class Xml
XML handling for Cake.
The methods in these classes enable the datasources that use XML to work.
Copyright: Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
License: License (http://www.opensource.org/licenses/mit-license.php)
Location: Cake/Utility/Xml.php
Method Summary
- 
			_createChild() protected staticHelper to _fromArray(). It will create childs of arrays
- 
			_fromArray() protected staticRecursive method to create childs from array
- 
			_loadXml() protected staticParse the input data and create either a SimpleXmlElement object or a DOMDocument.
- 
			_toArray() protected staticRecursive method to toArray
- 
			build() public staticInitialize SimpleXMLElement or DOMDocument from a given XML string, file path, URL or array.
- 
			fromArray() public staticTransform an array into a SimpleXMLElement
- 
			toArray() public staticReturns this XML structure as a array.
Method Detail
_createChild() protected static ¶
_createChild( array $data )
Helper to _fromArray(). It will create childs of arrays
Parameters
- array $data
- Array with informations to create childs
_fromArray() 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 'attribute' or 'tags'. This determines where nested keys go.
Throws
_loadXml() 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
_toArray() 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
build() public static ¶
build( mixed $input , array $options = array() )
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>', array('return' => 'domdocument'));
Building XML from a file path:
$xml = Xml::build('/path/to/an/xml/file.xml');
Building from a remote URL:
$xml = Xml::build('http://example.com/example.xml');
Building from an array:
{{{ $value = array( 'tags' => array( 'tag' => array( array( 'id' => '1', 'name' => 'defect' ), array( '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.
- If using array as input, you can pass optionsfrom Xml::fromArray.
Parameters
- mixed $input
- XML string, a path to a file, an URL or an array
- array $options optional array()
- The options to use
Returns
SimpleXMLElement or DOMDocument
Throws
fromArray() public static ¶
fromArray( array $input , array $options = array() )
Transform an array into a SimpleXMLElement
Options
- formatIf create childs ('tags') or attributes ('attribute').
- 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 = array( 'root' => array( 'tag' => array( '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, 'attribute'); Will generate:
<root><tag id="1" value="defect">description</tag></root>
Parameters
- array $input
- Array with data
- array $options optional array()
- The options to use
Returns
SimpleXMLElement or DOMDocument
