PHP DOM数组 - 削减第一个元素 - 更好的方法

时间:2010-09-02 08:39:47

标签: php arrays dom

我真的被困了,不知道如何更好地实现一个想法。所以,我们有一个XML文件:

alt text

我有一个函数dom_to_array()

的数组
function dom2array($node) {$result = array(); 
if($node->nodeType == XML_TEXT_NODE) { 
    $result = $node->nodeValue; 
} 
else { 
    if($node->hasAttributes()) { 
        $attributes = $node->attributes; 
        if(!is_null($attributes))  
            foreach ($attributes as $index=>$attr)  
                $result[$attr->name] = $attr->value; 
    } 
    if($node->hasChildNodes()){ 
        $children = $node->childNodes; 
        for($i=0;$i<$children->length;$i++) { 
            $child = $children->item($i); 
            if($child->nodeName != '#text') 
            if(!isset($result[$child->nodeName])) 
                $result[$child->nodeName] = $this->dom2array($child); 
            else { 
                $aux = $result[$child->nodeName]; 
                $result[$child->nodeName] = array( $aux ); 
                $result[$child->nodeName][] = $this->dom2array($child); 
            } 
        } 
    } 
} 
return $result; 

}

我有一个带有第一个 XML元素的数组 - STRUCTURE。

阵列
--STRUCTURE
     ---- PAGE
     ---- PAGE
        - - - 页面      ---- PAGE

所以主要问题是make数组如何:

阵列
     ---- PAGE
     ---- PAGE
        - - - 页面      ---- PAGE

如何做到更好的朋友 - 我不需要在数组中包含“结构”,是否可以通过DOM函数创建?!

1 个答案:

答案 0 :(得分:2)

基本上你只想从创建的PHP数组中排除structure级别?

我想,你现在就做这样的事情:

$dom = new DOMDocument();
$dom->loadXML($xml);
$array = dom2array($dom);

结果数组包含structure键。

你可以做的是从结构元素开始,如下所示:

...
$array = dom2array($dom->getElementsByTagName('structure')->item(0));

或者你保持原样并使用数组键这样做:

$array = dom2array($dom);
$array = $array['structure']; // set $array to the subelements of "structure"