API16:JXMLElement/asFormattedXML
From Joomla! Documentation
Description
Return a well-formed XML string based on SimpleXML element
Syntax
asFormattedXML($compressed=false, $indent="\t", $level=0)
Parameter Name | Default Value | Description |
---|---|---|
$compressed | false | $compressed Should we use indentation and newlines ? |
$indent | "\t" | $level Indentaion level. |
$level | 0 |
Returns
string
Defined in
libraries/joomla/utilities/xmlelement.php
Importing
jimport( 'joomla.utilities.xmlelement' );
Source Body
public function asFormattedXML($compressed = false, $indent = "\t", $level = 0)
{
$out = '';
//-- Start a new line, indent by the number indicated in $level
$out .=($compressed) ? '' : "\n".str_repeat($indent, $level);
//-- Add a <, and add the name of the tag
$out .= '<'.$this->getName();
//-- For each attribute, add attr="value"
foreach($this->attributes() as $attr) {
$out .= ' '.$attr->getName().'="'.htmlspecialchars((string)$attr, ENT_COMPAT, 'UTF-8').'"';
}
//-- If there are no children and it contains no data, end it off with a />
if( ! count($this->children())
&& !(string)$this)
{
$out .= " />";
}
else
{
//-- If there are children
if(count($this->children()))
{
//-- Close off the start tag
$out .= '>';
$level ++;
//-- For each child, call the asFormattedXML function (this will ensure that all children are added recursively)
foreach($this->children() as $child)
{
$out .= $child->asFormattedXML($compressed, $indent, $level);
}
$level --;
//-- Add the newline and indentation to go along with the close tag
$out .=($compressed) ? '' : "\n".str_repeat($indent, $level);
}
elseif((string)$this)
{
//-- If there is data, close off the start tag and add the data
$out .= '>'.htmlspecialchars((string)$this, ENT_COMPAT, 'UTF-8');
}
//-- Add the end tag
$out .= '</'.$this->getName().'>';
}
return $out;
}
demo.xml
Get the whole XML document or a part of it.
Output:
Die "komprimierte" Ausgabe, z.B. zur Verwendung in Streams:
Output:
Output only a part of the document:
Output: