欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php實現xml數據轉數組兩種方式

 更新時間:2023年11月24日 09:49:15   作者:PHP隔壁老王鄰居  
這篇文章主要為大家詳細介紹了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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論