亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

php實現(xiàn)xml數(shù)據(jù)轉數(shù)組兩種方式

 更新時間:2023年11月24日 09:49:15   作者:PHP隔壁老王鄰居  
這篇文章主要為大家詳細介紹了php實現(xiàn)xml數(shù)據(jù)轉數(shù)組兩種方式的相關知識,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以參考下

方法一、可以使用simplexml_load_string()函數(shù)將XML數(shù)據(jù)轉換為數(shù)組

$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數(shù)據(jù)存儲在一個字符串中,然后使用simplexml_load_string()函數(shù)將其轉換為SimpleXMLElement對象。

接下來,使用json_encode()函數(shù)將SimpleXMLElement對象轉換為JSON字符串,

再使用json_decode()函數(shù)將JSON字符串轉換為關聯(lián)數(shù)組。最后,使用print_r()函數(shù)打印出數(shù)組的內(nèi)容 

方法二、使用PHP內(nèi)置的DOMDocument類來將XML數(shù)據(jù)轉換為數(shù)組的方法

$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數(shù)據(jù)加載到該對象中。

然后,使用domToArray()函數(shù)將DOM文檔轉換為數(shù)組。

這個函數(shù)遞歸地遍歷XML節(jié)點,并將節(jié)點的名稱和值存儲在數(shù)組中。

如果節(jié)點有屬性,則也將其作為鍵值對存儲在數(shù)組中。

最后,使用print_r()函數(shù)打印出數(shù)組的內(nèi)容。

需要注意的是,domToArray()函數(shù)是遞歸的,它能夠處理復雜的XML結構。請根據(jù)你的XML數(shù)據(jù)進行適當?shù)恼{(diào)整 

方法補充

方法一:

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轉換成數(shù)組
        return $xmlArray;
    }

方法二:數(shù)組和XML相互轉換

//數(shù)組轉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轉數(shù)組
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轉數(shù)組
    private function xmlToarr($xml)
    {
        if (!$xml) {
            throw new WxPayException("xml數(shù)據(jù)異常!");
        }
        //將XML轉為array
        //禁止引用外部xml實體
        libxml_disable_entity_loader(true);
        $data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
        return $data;
    }

到此這篇關于php實現(xiàn)xml數(shù)據(jù)轉數(shù)組兩種方式的文章就介紹到這了,更多相關php xml轉數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論