php實現xml數據轉數組兩種方式
方法一、可以使用simplexml_load_string()函數將XML數據轉換為數組
$xmlData = '<root><name>John Doe</name><age>30</age></root>'; $xml = simplexml_load_string($xmlData); $json = json_encode($xml); $array = json_decode($json, true); print_r($array);
首先將XML數據存儲在一個字符串中,然后使用simplexml_load_string()函數將其轉換為SimpleXMLElement對象。
接下來,使用json_encode()函數將SimpleXMLElement對象轉換為JSON字符串,
再使用json_decode()函數將JSON字符串轉換為關聯(lián)數組。最后,使用print_r()函數打印出數組的內容
方法二、使用PHP內置的DOMDocument類來將XML數據轉換為數組的方法
$xmlData = '<root><name>John Doe</name><age>30</age></root>'; $xml = new DOMDocument(); $xml->loadXML($xmlData); $array = domToArray($xml->documentElement); print_r($array); function domToArray($node) { $array = array(); if ($node->hasAttributes()) { foreach ($node->attributes as $attr) { $array[$attr->nodeName] = $attr->nodeValue; } } if ($node->hasChildNodes()) { foreach ($node->childNodes as $childNode) { if ($childNode->nodeType == XML_ELEMENT_NODE) { $array[$childNode->nodeName] = domToArray($childNode); } else if ($childNode->nodeType == XML_TEXT_NODE) { $array['value'] = $childNode->nodeValue; } } } return $array; }
這個例子創(chuàng)建了一個DOMDocument對象,并使用loadXML()方法將XML數據加載到該對象中。
然后,使用domToArray()函數將DOM文檔轉換為數組。
這個函數遞歸地遍歷XML節(jié)點,并將節(jié)點的名稱和值存儲在數組中。
如果節(jié)點有屬性,則也將其作為鍵值對存儲在數組中。
最后,使用print_r()函數打印出數組的內容。
需要注意的是,domToArray()函數是遞歸的,它能夠處理復雜的XML結構。請根據你的XML數據進行適當的調整
方法補充
方法一:
function xmlToArray(string $xml, $oldStr = [], $newStr = []) { //過濾特殊xml 格式 if (!empty($oldStr)) { $xml = str_replace($oldStr, $newStr, $xml); } $objectXml = simplexml_load_string($xml);//將文件轉換成對象 $xmlJson = json_encode($objectXml);//將對象轉換個JSON $xmlArray = json_decode($xmlJson, true);//將json轉換成數組 return $xmlArray; }
方法二:數組和XML相互轉換
//數組轉xml function ArrToXml($arr) { if(!is_array($arr) || count($arr) == 0) return ''; $xml = "<xml>"; foreach ($arr as $key=>$val) { if (is_numeric($val)){ $xml.="<".$key.">".$val."</".$key.">"; }else{ $xml.="<".$key."><![CDATA[".$val."]]></".$key.">"; } } $xml.="</xml>"; return $xml; } //Xml轉數組 function XmlToArr($xml) { if($xml == '') return ''; libxml_disable_entity_loader(true); $arr = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true); return $arr; }
方法三:
//獲取xml xml轉數組 private function xmlToarr($xml) { if (!$xml) { throw new WxPayException("xml數據異常!"); } //將XML轉為array //禁止引用外部xml實體 libxml_disable_entity_loader(true); $data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true); return $data; }
到此這篇關于php實現xml數據轉數組兩種方式的文章就介紹到這了,更多相關php xml轉數組內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
php獲取遠程圖片的兩種 CURL方式和sockets方式獲取遠程圖片
php獲取遠程圖片的兩種:CURL方式和sockets方式獲取遠程圖片,需要的朋友可以參考下。2011-11-11如何使用PHP實現javascript的escape和unescape函數
本篇文章是對使用PHP實現javascript的escape和unescape函數的方法進行了詳細的分析介紹,需要的朋友參考下2013-06-06