tongyi007 发表于 2015-8-30 12:27:49

PHP遍历解析XML为一个数组

1   public function parseXML($menus){
2         $result = array();
3         foreach($menus as $menu){
4             $tmparr = array();
5
6             //    处理空文本节点方式A
7             if( $menu->nodeName !='#text'){
8
9               //    检索子元素时跳跃过文本节点- 处理空文本节点方式B
10               for($i=1; $i<$menu->childNodes->length; $i+=2) {
11                     $aNode = $menu->childNodes->item($i);
12
13                     //    子元素遍历
14                     $aNode->childNodes->length > 1 ? $tmparr[$aNode->nodeName] = $this->parseXML( $aNode->childNodes)
15                     : $tmparr[$aNode->nodeName] = $aNode->nodeValue;
16               }
17               array_push($result,$tmparr);
18             }
19         }
20         return $result;
21   }
22
23
24
25         $doc = new DOMDocument();
26         $doc->load ( ‘a.xml’ );
27
28         //    第一种,有空文本节点
29         $menus =$doc->getElementsByTagName('siteMap')->item(0)->childNodes;
30
31          //    第二种,明确指定标签,序列无空文本节点。但子元素仍然有空节点
32
33         $xpath = new DOMXPath($doc);
34         $query = "/siteMap/child::a";
35
36         $menus = $xpath->query($query);
页: [1]
查看完整版本: PHP遍历解析XML为一个数组