开发者

SimpleXML node with spaces and equal signs in the node name

开发者 https://www.devze.com 2023-02-16 07:32 出处:网络
I have an xml document that contains spaces and equal signs开发者_运维技巧 in the node names. I\'m trying to use SimpleXML to extract the data from those nodes but it returns blank no matter what I tr

I have an xml document that contains spaces and equal signs开发者_运维技巧 in the node names. I'm trying to use SimpleXML to extract the data from those nodes but it returns blank no matter what I try.

A sample of the xml document

  <code><away>
  <radio>url.here</radio> 
  <live bitrate="1">url.here</live> 
  <live bitrate="0">url.here</live> 
  </away></code>

I have tried using bothecho "<td>".$node->away->{'live bitrate="1"'}."</td>"; echo "<td>".$node->away->{'live'}->{'bitrate="1"'}."</td>";


Here is a function I use to convert the SimpleXML object to an array:

        public function simpleXMLToArray($xml,
                    $flattenValues=true,
                    $flattenAttributes = true,
                    $flattenChildren=true,
                    $valueKey='@value',
                    $attributesKey='@attributes',
                    $childrenKey='@children'){

            $return = array();
            if(!($xml instanceof SimpleXMLElement)){return $return;}
            $name = $xml->getName();
            $_value = trim((string)$xml);
            if(strlen($_value)==0){$_value = null;};

            if($_value!==null){
                    if(!$flattenValues){$return[$valueKey] = $_value;}
                    else{$return = $_value;}
            }

            $children = array();
            $first = true;
            foreach($xml->children() as $elementName => $child){
                    $value = $this->simpleXMLToArray($child, $flattenValues, $flattenAttributes, $flattenChildren, $valueKey, $attributesKey, $childrenKey);
                    if(isset($children[$elementName])){
                            if($first){
                                    $temp = $children[$elementName];
                                    unset($children[$elementName]);
                                    $children[$elementName][] = $temp;
                                    $first=false;
                            }
                            $children[$elementName][] = $value;
                    }
                    else{
                            $children[$elementName] = $value;
                    }
            }
            if(count($children)>0){
                    if(!$flattenChildren){$return[$childrenKey] = $children;}
                    else{$return = array_merge($return,$children);}
            }

            $attributes = array();
            foreach($xml->attributes() as $name=>$value){
                    $attributes[$name] = trim($value);
            }
            if(count($attributes)>0){
                    if(!$flattenAttributes){$return[$attributesKey] = $attributes;}
                    else{$return = array_merge($return, $attributes);}
            }

            return $return;
    }
0

精彩评论

暂无评论...
验证码 换一张
取 消