<?php public function parsexml($menus) { $result = array(); foreach ($menus as $menu) { $tmparr = array(); // 处理空文本节点方式a if ($menu->nodename != '#text') { // 检索子元素时跳跃过文本节点 - 处理空文本节点方式b for ($i = 1; $i < $menu->childnodes->length; $i+= 2) { $anode = $menu->childnodes->item($i); // 子元素遍历 $anode->childnodes->length > 1 ? $tmparr[$anode->nodename] = $this->parsexml($anode->childnodes) : $tmparr[$anode->nodename] = $anode->nodevalue; } array_push($result, $tmparr); } } return $result; } $doc = new domdocument(); $doc->load('a.xml'); // 第一种,有空文本节点 $menus = $doc->getelementsbytagname('sitemap')->item(0)->childnodes; // 第二种,明确指定标签,序列无空文本节点。但子元素仍然有空节点 $xpath = new domxpath($doc); $query = "/sitemap/child::a"; $menus = $xpath->query($query);
教程链接:
随意转载~但请保留教程地址★