note 82962 deleted from simplexml.examples by felipe
| From: | felipe@php.net | Date: | Sat, 03 May 2008 17:08:05 +0000 |
| Subject: | note 82962 deleted from simplexml.examples by felipe | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-139032@lists.php.net to get a copy of this message | ||
Note Submitter: dipl dot paed dot thomas dot schaefer at web dot de
----
<?php
class QXML {
const attribute = "@attributes";
const textNode = "@textNode";
protected $xml;
public function asObject(){
if(strlen($this->asXML())){
return simplexml_load_string($this->asXml());
} else {
return false;
}
}
public function setXml($xml){
$this->xml = $xml;
}
public function asXML(){
return $this->xml;
}
public function toArray($xml) {
$results = Array();
foreach($xml->children() as $key => $object) {
$recObj = $this->toArray($object);
foreach( $object->attributes() as $ak => $av ) {
$recObj[self::attribute][$ak] = (string)$av;
}
if(!$recObj[self::attribute]){
$recObj[self::attribute] = "";
}
if(!$recObj[self::textNode]){
$recObj[self::textNode] = trim((string)$object);
}
if (!in_array($key,array_keys($results))) {
$results[$key] = $recObj;
} elseif (@in_array(0,@array_keys($results[$key]))) {
if(count($results[$key])==2){
if($results[$key][self::attribute]
|| $results[$key][self::textNode] )
{
$tmp=Array();
$tmp[self::attribute] = $results[$key][self::attribute];
$tmp[self::textNode] = $results[$key][self::textNode];
unset($results[$key][self::attribute]);
unset($results[$key][self::textNode]);
$results[$key][0]=$tmp;
unset($tmp);
}
}
if(count(array_diff_key($results[$key],$recObj))==0
&& count($results[$key])>0)
{
$tmp=$results[$key];
unset($results[$key]);
$results[$key][]=$tmp;
}
$results[$key][] = $recObj;
} else {
$results[$key] = array($results[$key]);
$results[$key][] = $recObj;
}
}
return $results;
}
public function toXML(
$xmlArray,
$elmName='graph',
$elmCloseTag="",
$level=0)
{
$this->setXml(
$this->_toXML(
$xmlArray,
$elmName,
$elmCloseTag,
$level)
);
}
}
?>