我真的被困了,不知道如何更好地实现一个想法。所以,我们有一个XML文件:
我有一个函数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函数创建?!
答案 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"