header("Content-type:text/xml;charset=utf-8"); function getRootPath(){ $biasNum = substr_count($_SERVER['PHP_SELF'], '/'); //用'/'分割當前路徑字符串,并計算分割后的字符串數量 $relativePath = './'; //初始化變量$relativePath為'./' for ($i = 0; $i < ($biasNum - 1); $i ++) { //循環添加'../' $relativePath .= '../'; } return $relativePath; } function display_children($pid,$level,$root,$temDom){ $targetRoot=$temDom->getElementsByTagName('root')->item(0); foreach ($root->childNodes as $sons){ $sonID=str_replace('n', '', $sons->nodeName); $sonPid=$sons->getElementsByTagName('pid')->item(0)->nodeValue; $sonName=$sons->getElementsByTagName('name')->item(0)->nodeValue; $sonExplain=$sons->getElementsByTagName('explain')->item(0)->nodeValue; if($sonPid==$pid){ //echo str_repeat('+', $level).$sonName.' and '.$sonID.'<br/>'; if($level==1){ $level1=$temDom->createElement('level1'); $level1->setAttribute('aid', $sonID); $level1->setAttribute('name', $sonName); $level1->setAttribute('explain', $sonExplain); $targetRoot->appendChild($level1); //$level1->getAttribute(''); }else{ $parsentLevel=$temDom->getElementsByTagName('level'.($level-1)); foreach ($parsentLevel as $levels){ if($levels->getAttribute('aid')==$sonPid){ $sonLevel=$temDom->createElement('level'.$level); $sonLevel->setAttribute('aid', $sonID); $sonLevel->setAttribute('name', $sonName); $sonLevel->setAttribute('explain', $sonExplain); $levels->appendChild($sonLevel); } } } display_children($sonID,$level+1,$root,$temDom); } } } $dom=new DOMDocument('1.0','utf-8'); $dom->load(getRootPath().'mydata/area/index/main.xml'); $root=$dom->getElementsByTagName('root')->item(0); $temDom=new DOMDocument('1.0','utf-8'); $root1=$temDom->createElement('root'); $temDom->appendChild($root1); //$tartRoot=$temDom->getElementsByTagName('root')->item(0); display_children(0, 1, $root,&$temDom); echo $temDom->saveXML();
轉換后的樹形結構如下
<?xml version="1.0" encoding="utf-8"?><root><level1 aid="42" name="新加坡" explain="花園國度"/><level1 aid="41" name="俄羅斯" explain="北極熊"/><level1 aid="40" name="韓國" explain="高麗棒子"/><level1 aid="39" name="日本" explain="小日本"/><level1 aid="38" name="美國" explain="霸權主義國家"/><level1 aid="37" name="中國" explain="偉大的國家"><level2 aid="66" name="河南省" explain=""><level3 aid="80" name="開封" explain="少林所在地"/><level3 aid="79" name="洛陽" explain="歷史名城"/><level3 aid="78" name="鄭州市" explain="河南的省會"><level4 aid="81" name="測試區" explain=""/></level3></level2><level2 aid="55" name="貴州省" explain=""/><level2 aid="54" name="海南省" explain=""/><level2 aid="53" name="西藏自治區" explain=""/><level2 aid="52" name="內蒙古自治區" explain=""/><level2 aid="51" name="寧夏回族自治區" explain=""/><level2 aid="50" name="甘肅省" explain=""/><level2 aid="49" name="云南省" explain=""/><level2 aid="48" name="廣西壯族自治區" explain=""/><level2 aid="47" name="廣東省" explain=""/><level2 aid="46" name="陜西省" explain=""/><level2 aid="45" name="山西省" explain=""/><level2 aid="44" name="湖南省" explain=""/><level2 aid="43" name="湖北省" explain=""><level3 aid="70" name="棗陽市" explain=""/><level3 aid="61" name="孝感市" explain=""/><level3 aid="60" name="十堰市" explain=""/><level3 aid="59" name="荊州市" explain=""/><level3 aid="58" name="鄂州市" explain=""/><level3 aid="57" name="襄陽市" explain=""><level4 aid="68" name="襄城區" explain=""/><level4 aid="67" name="谷城縣" explain=""/></level3><level3 aid="56" name="武漢市" explain=""><level4 aid="86" name="徐東區" explain="我去過"/><level4 aid="85" name="蔡甸區" explain=""/><level4 aid="84" name="江漢區" explain=""/><level4 aid="83" name="江岸區" explain=""/><level4 aid="82" name="青山區" explain=""/><level4 aid="69" name="洪山區" explain=""/><level4 aid="63" name="江漢區" explain=""/></level3></level2></level1></root>
<?xml version="1.0" encoding="utf-8"?><root><n86><name><![CDATA[徐東區]]></name><pid><![CDATA[56]]></pid><explain><![CDATA[我去過]]></explain></n86><n85><name><![CDATA[蔡甸區]]></name><pid><![CDATA[56]]></pid><explain><![CDATA[]]></explain></n85><n84><name><![CDATA[江漢區]]></name><pid><![CDATA[56]]></pid><explain><![CDATA[]]></explain></n84><n83><name><![CDATA[江岸區]]></name><pid><![CDATA[56]]></pid><explain><![CDATA[]]></explain></n83><n82><name><![CDATA[青山區]]></name><pid><![CDATA[56]]></pid><explain><![CDATA[]]></explain></n82><n81><name><![CDATA[測試區]]></name><pid><![CDATA[78]]></pid><explain><![CDATA[]]></explain></n81><n80><name><![CDATA[開封]]></name><pid><![CDATA[66]]></pid><explain><![CDATA[少林所在地]]></explain></n80><n79><name><![CDATA[洛陽]]></name><pid><![CDATA[66]]></pid><explain><![CDATA[歷史名城]]></explain></n79><n78><name><![CDATA[鄭州市]]></name><pid><![CDATA[66]]></pid><explain><![CDATA[河南的省會]]></explain></n78><n70><name><![CDATA[棗陽市]]></name><pid><![CDATA[43]]></pid><explain><![CDATA[]]></explain></n70><n69><name><![CDATA[洪山區]]></name><pid><![CDATA[56]]></pid><explain><![CDATA[]]></explain></n69><n68><name><![CDATA[襄城區]]></name><pid><![CDATA[57]]></pid><explain><![CDATA[]]></explain></n68><n67><name><![CDATA[谷城縣]]></name><pid><![CDATA[57]]></pid><explain><![CDATA[]]></explain></n67><n66><name><![CDATA[河南省]]></name><pid><![CDATA[37]]></pid><explain><![CDATA[]]></explain></n66><n63><name><![CDATA[江漢區]]></name><pid><![CDATA[56]]></pid><explain><![CDATA[]]></explain></n63><n61><name><![CDATA[孝感市]]></name><pid><![CDATA[43]]></pid><explain><![CDATA[]]></explain></n61><n60><name><![CDATA[十堰市]]></name><pid><![CDATA[43]]></pid><explain><![CDATA[]]></explain></n60><n59><name><![CDATA[荊州市]]></name><pid><![CDATA[43]]></pid><explain><![CDATA[]]></explain></n59><n58><name><![CDATA[鄂州市]]></name><pid><![CDATA[43]]></pid><explain><![CDATA[]]></explain></n58><n57><name><![CDATA[襄陽市]]></name><pid><![CDATA[43]]></pid><explain><![CDATA[]]></explain></n57><n56><name><![CDATA[武漢市]]></name><pid><![CDATA[43]]></pid><explain><![CDATA[]]></explain></n56><n55><name><![CDATA[貴州省]]></name><pid><![CDATA[37]]></pid><explain><![CDATA[]]></explain></n55><n54><name><![CDATA[海南省]]></name><pid><![CDATA[37]]></pid><explain><![CDATA[]]></explain></n54><n53><name><![CDATA[西藏自治區]]></name><pid><![CDATA[37]]></pid><explain><![CDATA[]]></explain></n53><n52><name><![CDATA[內蒙古自治區]]></name><pid><![CDATA[37]]></pid><explain><![CDATA[]]></explain></n52><n51><name><![CDATA[寧夏回族自治區]]></name><pid><![CDATA[37]]></pid><explain><![CDATA[]]></explain></n51><n50><name><![CDATA[甘肅省]]></name><pid><![CDATA[37]]></pid><explain><![CDATA[]]></explain></n50><n49><name><![CDATA[云南省]]></name><pid><![CDATA[37]]></pid><explain><![CDATA[]]></explain></n49><n48><name><![CDATA[廣西壯族自治區]]></name><pid><![CDATA[37]]></pid><explain><![CDATA[]]></explain></n48><n47><name><![CDATA[廣東省]]></name><pid><![CDATA[37]]></pid><explain><![CDATA[]]></explain></n47><n46><name><![CDATA[陜西省]]></name><pid><![CDATA[37]]></pid><explain><![CDATA[]]></explain></n46><n45><name><![CDATA[山西省]]></name><pid><![CDATA[37]]></pid><explain><![CDATA[]]></explain></n45><n44><name><![CDATA[湖南省]]></name><pid><![CDATA[37]]></pid><explain><![CDATA[]]></explain></n44><n43><name><![CDATA[湖北省]]></name><pid><![CDATA[37]]></pid><explain><![CDATA[]]></explain></n43><n42><name><![CDATA[新加坡]]></name><pid><![CDATA[0]]></pid><explain><![CDATA[花園國度]]></explain></n42><n41><name><![CDATA[俄羅斯]]></name><pid><![CDATA[0]]></pid><explain><![CDATA[北極熊]]></explain></n41><n40><name><![CDATA[韓國]]></name><pid><![CDATA[0]]></pid><explain><![CDATA[高麗棒子]]></explain></n40><n39><name><![CDATA[日本]]></name><pid><![CDATA[0]]></pid><explain><![CDATA[小日本]]></explain></n39><n38><name><![CDATA[美國]]></name><pid><![CDATA[0]]></pid><explain><![CDATA[霸權主義國家]]></explain></n38><n37><name><![CDATA[中國]]></name><pid><![CDATA[0]]></pid><explain><![CDATA[偉大的國家]]></explain></n37></root>
優點支持無限極分類,但是訪問接口時返回XML樹形結構,更利于程序讀取!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答