php xml數據轉數組兩種方式

?

?

目錄

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

?方法二、使用PHP內置的DOMDocument類來將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字符串轉換為關聯數組。最后,使用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;
}

這個例子創建了一個DOMDocument對象,并使用loadXML()方法將XML數據加載到該對象中。

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

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

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

最后,使用print_r()函數打印出數組的內容。

需要注意的是,domToArray()函數是遞歸的,它能夠處理復雜的XML結構。請根據你的XML數據進行適當的調整?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/168150.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/168150.shtml
英文地址,請注明出處:http://en.pswp.cn/news/168150.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NX二次開發UF_CSYS_create_matrix 函數介紹

文章作者&#xff1a;里海 來源網站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CSYS_create_matrix Defined in: uf_csys.h int UF_CSYS_create_matrix(const double matrix_values [ 9 ] , tag_t * matrix_id ) overview 概述 Creates a 3 x 3 matrix. 創建…

nodejs+vue+python+PHP+微信小程序-青云商場管理系統的設計與實現-安卓-計算機畢業設計

研究步驟、措施&#xff1a; &#xff08;1&#xff09;與指導老師確定系統主要功能&#xff1b; &#xff08;2&#xff09;做需求分析及功能模塊劃分&#xff1b; &#xff08;3&#xff09;指導老師通過后&#xff0c;設計出用例圖&#xff0c;E-R圖&#xff0c;功能模塊圖 …

【XSLVGL2.0】如何新增一種語言和詞條

XSLVGL2.0 開發手冊 【XSLVGL2.0】如何新增一種語言和詞條 1、概述2、以外置資源的方式增加詞條3、以內置資源的方式增加詞條4、使用方法1、概述 本文件旨在介紹新增一種語言詞條的方法 2、以外置資源的方式增加詞條 假設項目需要增加一種英文的詞條。一般地,我們采用國際…

Git-將指定文件回退到指定版本

場景1&#xff1a;修改了文件/path/to/file&#xff0c;沒有提交&#xff0c;但是覺得改的不好&#xff0c;想還原。 解決&#xff1a; git checkout -- /path/to/file 場景2&#xff1a;修改了文件/path/to/file&#xff0c;已經提交&#xff0c;但是覺得改的不好&#xff0c…

老牌開源 SVG 編輯器 SVGEdit 是如何架構的?

大家好&#xff0c;我是前端西瓜哥。這次簡單看看 SVGEdit 的架構。 SVGEdit 的版本為 7.2.0。 SVGEdit 一款非常老牌的 SVG 圖形編輯器&#xff0c;用于編輯處理 SVG&#xff0c;start 數目前是 5.8k。 它的優點在于經過多年的開發&#xff0c;完成度高&#xff0c;較為成熟&a…

大眾博客系統測試報告【改】

一、項目背景 大眾博客系統采用前后端分離的方法來實現&#xff0c;同時使用了數據庫來存儲相關的數據&#xff0c;同時將其部署到云服務器上。前端主要有四個頁面構成&#xff1a;登錄頁、列表頁、詳情頁以及編輯頁&#xff0c;以上模擬實現了最簡單的大眾博客系統。其結合后端…

Tars-GO 開發

默認環境是安裝好的 創建服務: tarsgo make App Server Servant GoModuleName Tars 實例的名稱&#xff0c;有三個層級&#xff0c;分別是 App&#xff08;應用&#xff09;、Server&#xff08;服務&#xff09;、Servant&#xff08;服務者&#xff0c;有時也稱 Object&am…

LeetCode Hot100 74.搜索二維矩陣

題目&#xff1a; 給你一個滿足下述兩條屬性的 m x n 整數矩陣&#xff1a; 每行中的整數從左到右按非嚴格遞增順序排列。每行的第一個整數大于前一行的最后一個整數。 給你一個整數 target &#xff0c;如果 target 在矩陣中&#xff0c;返回 true &#xff1b;否則&#x…

數據結構——堆的實現

堆的實現-----C語言版 目錄&#xff1a;一、堆的實現1.1堆的定義1.2堆的實現1.2.1堆的各個接口1.2.2堆的向上調整1.2.3堆的向下調整1.2.4堆的定義聲明和初始化1.2.5堆的數據處理1.2.6堆的判空和堆的數據個數以及堆銷毀1.2.7堆的代碼實現 二、TOP—K問題 目錄&#xff1a; 一、…

C++ 文件和流、異常處理、動態內存、預處理器

一、C文件和流&#xff1a; 在C中進行文件處理&#xff0c;需要包含頭文件<iostream>和<fstream>。fstream標準庫定義的三個新的數據類型&#xff1a; 數據類型 描述 ofstream 該數據類型表示輸出文件流&#xff0c;用于創建文件并向文件寫入信息。 ifstream …

vscode項目推送到git

1、打開項目文件 打開文件后點擊vs code左側工具欄中第三個源代碼管理圖標&#xff0c;點擊初始化倉庫&#xff0c;此時會創建一個本地倉庫會檢查該項目中的文件變更 2、創建遠程倉庫 點擊克隆/下載&#xff0c;復制HTTPS地址 3、添加遠程地址 1&#xff09;圖形化操作 2…

Leetcode刷題之用隊列實現棧(C語言版)

Leetcode刷題之用隊列實現棧&#xff08;C語言版&#xff09; 一、題目描述二、題目要求三、題目示例四、題目解析Ⅰ、MyStack* myStackCreateⅡ、void myStackPush(MyStack* obj, int x)Ⅲ、int myStackPop(MyStack* obj)Ⅳ、int myStackTop(MyStack* obj)Ⅴ、bool myStackEmp…

文件夾重命名:徹底擺脫數字困擾,批量修改文件夾名去除數字

在日常生活和工作中&#xff0c;經常會遇到需要修改文件夾名稱的情況。有時候是因為文件夾名稱中包含了數字&#xff0c;有時候是因為文件夾名稱不符合規范。無論出于什么原因&#xff0c;修改文件夾名稱都是一件非常繁瑣的事情。尤其是需要修改大量文件夾名稱時&#xff0c;手…

Jenkins 整合 Docker 自動化部署

Docker 安裝 Jenkins 配置自動化部署 1. Docker 安裝 Jenkins 1.1 拉取鏡像文件 docker pull jenkins/jenkins1.2 創建掛載文件目錄 mkdir -p $HOME/jenkins_home1.3 啟動容器 docker run -d -p 8080:8080 -v $HOME/jenkins_home:/var/jenkins_home --name jenkins jenkin…

CentOS rpm安裝Nginx和配置

CentOS rpm安裝Nginx和配置 官方下載地址: http://nginx.org/en/download.html 介紹 Nginx(“engine x”)是一款由俄羅斯的程序設計師Igor Sysoev所開發高性能的 Web和 反向代理 服務器&#xff0c;也是一個 IMAP/POP3/SMTP 代理服務器。 rpm包安裝 #安裝nginx&#xff0c…

k8s部署的java服務查看連接nacos緩存的配置文件

一、問題描述 k8s部署的java服務&#xff0c;使用nacos中的配置文件&#xff0c;需要在緩存中查看該服務具體是使用到了哪些配置文件 二、解決 參考文檔: https://nacos.io/zh-cn/docs/system-configurations.html 文檔描述如下: 進入java服務容器進入用戶目錄下的nacos&a…

4-Docker命令之docker version

1.docker version介紹 docker version命令是用于查看docker容器的版本信息 2.docker version用法 docker version [參數] [root@centos79 ~]# docker version --helpUsage: docker version [OPTIONS]Show the Docker version informationOptions:-f, --format string Fo…

Android 12.0 mt6771新增分區功能實現四

1.前言 在12.0的系統rom開發中,在對某些特殊模塊中關于數據的存儲方面等需要新增分區來保存, 所以就需要在系統分區新增分區,接下來就來實現這個功能,看第四部分的新增分區的實現過程 2.mt6771新增分區功能實現四的核心類 device/mediatek/mt6771/ueventd.mt6771.rcdevice…

Java枚舉詳解

一、什么是枚舉類型 枚舉類型是一種特殊的數據類型&#xff0c;用于定義一組固定的命名常量。枚舉類型提供了一種更強大、更安全和更易讀的方式來表示一組相關的常量。 在Java中&#xff0c;枚舉類型是通過使用enum關鍵字來定義的。枚舉類型可以包含一個或多個枚舉常量&#xf…

常見狀態碼總結

常見狀態碼總結 2xx 200 OK&#xff1a;表示服務器成功處理了客戶端的請求&#xff0c;并返回所請求的數據。這是最常見的狀態碼&#xff0c;表示一切正常。201 Created&#xff1a;表示服務器成功處理了客戶端的 POST 請求&#xff0c;并在服務器上創建了新的資源。204 No C…