亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP解析XML?

PHP解析XML?

PHP
實在忍不住了 2017-02-08 15:16:08
我用PHP解析 bpmn生成的XML文件,但是生成的XML文件很復雜,解析出來的有數據丟失$xmlfile = 'test.xml';$xmlparser = xml_parser_create();// 打開文件并讀取數據$fp = fopen($xmlfile, 'r');$xmldata = fread($fp, 4096);xml_parse_into_struct($xmlparser,$xmldata,$values);xml_parser_free($xmlparser);echo json_encode($values);有數據丟失也用了遞歸的方式解析,也有丟失/對xml文件進行解析function get_xml_file($filename = 'test.xml'){ ? ?//首先要建一個DOMDocument對象 ? ?$domObject = new DOMDocument(); ? ?//加載test.xml文件 ? ?$domObject->load($filename); ? ?//返回xml文件的根節點 ? ?$rootObject = $domObject->documentElement; ? ?//根據跟節點取到xml的結構返回一個數組; ? ?$array = get_node_array($rootObject); ? ?//返回xml結構,類型為數組 ? ?return $array;}//返回一個xml節點的所以子元素function get_node_array($node){ ? ?//定義數組返回這個xml的結構 ? ?$array = array(); ? ?//判斷根節點是否還有屬性 ? ?if($node->hasAttributes()) ? ?{ ? ? ? ?foreach($node->attributes as $attrabute) ? ? ? ?{ ? ? ? ? ? ?$array[$attrabute->nodeName]=$attrabute->nodeValue; ? ? ? ?} ? ?} ? ?//如果根節點還有子節點 ? ?if($node->hasChildNodes()) ? ?{ ? ? ? ?//取到根節點的所有子節點,返回一數組 ? ? ? ?$child_array = $node->childNodes; ? ? ? ?//如果只用一個子節點 ? ? ? ?if($child_array->length == 1) ? ? ? ?{ ? ? ? ? ? ?$array[$node->firstChild->nodeName]=$node->firstChild->nodeValue; ? ? ? ?}else ? ? ? ?{ ? ? ? ? ? ?//開始遍歷子節點 ? ? ? ? ? ?foreach($child_array as $child_item) ? ? ? ? ? ?{ ? ? ? ? ? ? ? ?//如果這個節點不是文本節點的話,遞歸進行遍歷 ? ? ? ? ? ? ? ?if($child_item->nodeType != XML_TEXT_NODE) ? ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ? ?$array[$child_item->nodeName][] = get_node_array($child_item); ? ? ? ? ? ? ? ?} ? ? ? ? ? ?} ? ? ? ?} ? ?}else ? ?{ ? ? ? ?return $node->nodeValue; ? ?} ? ?return $array;}print_r(json_encode(get_xml_file('test.xml')));
查看完整描述

1 回答

?
512205584

TA貢獻2條經驗 獲得超2個贊

用simplexml

查看完整回答
反對 回復 2017-02-16
  • 1 回答
  • 0 關注
  • 1252 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號