note 82963 modified in simplexml.examples by felipe
| From: | felipe@php.net | Date: | Sat, 03 May 2008 17:08:30 +0000 |
| Subject: | note 82963 modified in simplexml.examples by felipe | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-139033@lists.php.net to get a copy of this message | ||
<?php
class QXML {
...
protected function _toXML(
$xmlArray,
$elmName='graph',
$elmCloseTag="",
$level=0)
{
$xmlString = "";
if(is_array($xmlArray)){
$strXmlAttributes = "";
$key_xml = "";
$keysXmlArray = array_keys($xmlArray);
$curLevel = $level + 1;
if(in_array(self::attribute,$keysXmlArray)){
if(isset($xmlArray[self::attribute])){
if(is_array($xmlArray[self::attribute])){
foreach($xmlArray[self::attribute]
as $xmlArrayKey => $xmlArrayValue)
{
$strXmlAttributes .= sprintf(' %s="%s"',
$xmlArrayKey,
addslashes($xmlArrayValue));
}
}
}
unset($xmlArray[self::attribute]);
}
if(in_array(self::textNode,$keysXmlArray)){
if(isset($xmlArray[self::textNode])){
if($xmlArray[self::textNode]){
$key_xml = $xmlArray[self::textNode];
}
if(strlen($ky_xml)){
$key_xml = sprintf("<![CDATA[%s]]>",$key_xml);
} else {
$key_xml = "";
}
}
unset($xmlArray[self::textNode]);
}
$keysXmlArray=array_keys($xmlArray);
if($elmCloseTag){
$indent=str_repeat(" ",$level * 5);
$xmlString .="\n".$indent.
"<".$elmCloseTag.$strXmlAttributes.">".
$key_xml;
}
if(is_array($xmlArray) && count($xmlArray)>0
&& count($keysXmlArray)>0)
{
reset($xmlArray);
foreach($keysXmlArray as $key){
$altKey = $altKeyXml = $xmlArray[$key];
$check = false;
foreach(array_keys($altKeyXml) as $j=>$p){
if(is_numeric($j)){
$check=true;
$xmlString.= $this->_toXML(
$altKeyXml[$j],
"",
$key,
$curLevel
);
unset($altKeyXml[$j]);
}
}
if($check){
$altKey = $altKeyXml;
}
if($altKey){
$xmlString .= $this->_toXML($altKey,"",$key,$curLevel);
}
}
}
if($elmCloseTag){
$xmlString.= (count($xmlArray)>0?"\n".$indent:"").
"</".$elmCloseTag.">";
}
}
if($elmName) {
$xmlString = "<?xml version='1.0'
encoding='UTF-8'?>\n$xmlString\n";
}
return $xmlString;
}
...
}
?>
--was--
Missing part because of length restrictions
<?php
class QXML {
...
protected function _toXML(
$xmlArray,
$elmName='graph',
$elmCloseTag="",
$level=0)
{
$xmlString = "";
if(is_array($xmlArray)){
$strXmlAttributes = "";
$key_xml = "";
$keysXmlArray = array_keys($xmlArray);
$curLevel = $level + 1;
if(in_array(self::attribute,$keysXmlArray)){
if(isset($xmlArray[self::attribute])){
if(is_array($xmlArray[self::attribute])){
foreach($xmlArray[self::attribute]
as $xmlArrayKey => $xmlArrayValue)
{
$strXmlAttributes .= sprintf(' %s="%s"',
$xmlArrayKey,
addslashes($xmlArrayValue));
}
}
}
unset($xmlArray[self::attribute]);
}
if(in_array(self::textNode,$keysXmlArray)){
if(isset($xmlArray[self::textNode])){
if($xmlArray[self::textNode]){
$key_xml = $xmlArray[self::textNode];
}
if(strlen($ky_xml)){
$key_xml = sprintf("<![CDATA[%s]]>",$key_xml);
} else {
$key_xml = "";
}
}
unset($xmlArray[self::textNode]);
}
$keysXmlArray=array_keys($xmlArray);
if($elmCloseTag){
$indent=str_repeat(" ",$level * 5);
$xmlString .="\n".$indent.
"<".$elmCloseTag.$strXmlAttributes.">".
$key_xml;
}
if(is_array($xmlArray) && count($xmlArray)>0
&& count($keysXmlArray)>0)
{
reset($xmlArray);
foreach($keysXmlArray as $key){
$altKey = $altKeyXml = $xmlArray[$key];
$check = false;
foreach(array_keys($altKeyXml) as $j=>$p){
if(is_numeric($j)){
$check=true;
$xmlString.= $this->_toXML(
$altKeyXml[$j],
"",
$key,
$curLevel
);
unset($altKeyXml[$j]);
}
}
if($check){
$altKey = $altKeyXml;
}
if($altKey){
$xmlString .= $this->_toXML($altKey,"",$key,$curLevel);
}
}
}
if($elmCloseTag){
$xmlString.= (count($xmlArray)>0?"\n".$indent:"").
"</".$elmCloseTag.">";
}
}
if($elmName) {
$xmlString = "<?xml version='1.0'
encoding='UTF-8'?>\n$xmlString\n";
}
return $xmlString;
}
...
}
?>
http://php.net/manual/en/simplexml.examples.php