1. 程式人生 > >XML與陣列相互轉換

XML與陣列相互轉換

在實際的開發中,可能會經常將XML資料和陣列之間來回的轉換。如果是XML資料轉換為陣列,這樣比較方便讀取;陣列轉換為XML這種應用場景更為多見,如果我們某一天要寫XML的介面,這一步肯定是必須要做的,通常我們從資料庫中查詢到的資料是陣列,我們必須將陣列轉化為XML資料,然後將其返回。

1、XML轉陣列 
步驟: 
(1)首先使用SimpleXML將xml檔案轉換為物件 
(2)由於這個物件中既有陣列,陣列內又包含物件,我們使用遞迴將每一個物件強轉成陣列

轉換程式碼:

  1. <?php  
  2. /** 
  3.  * XML轉換成陣列 
  4.  * @author webbc 
  5.  */
  6. function xml2arr($simxml){  
  7.     $simxml = (array)$simxml;//強轉
  8.     foreach($simxmlas$k => $v){  
  9.         if(is_array($v) || is_object($v)){  
  10.             $simxml[$k] = xml2arr($v);  
  11.         }  
  12.     }  
  13.     return$simxml;      
  14. }  
  15. $simxml = simplexml_load_file('./06.xml');  
  16. //這個物件中既有陣列,又有物件,使用起來不怎麼方便,可以嘗試將這個物件轉換成陣列
  17. //print_r($simxml);
  18. print_r(xml2arr($simxml
    ));  
  19. ?>  

06.xml檔案:


轉換前: 

這個物件中既有陣列,陣列中又包含了物件


轉換後: 

將這個物件中的所有物件全轉換成陣列


2、陣列轉換為XML

(1)一維陣列轉換為XML資料

程式碼:

  1. <?php  
  2. /** 
  3.  * 一維陣列轉xml 
  4.  * @author webbc 
  5.  */
  6. $arr = array(  
  7.     'name' => 'webbc',  
  8.     'age' => '22',  
  9. );//要轉換的陣列
  10. //轉換函式
  11. function arr2xml($arr){  
  12.     $simxml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><root></root>'
    );//建立simplexml物件
  13.     //遍歷陣列,迴圈新增到root節點中
  14.     foreach($arras$k=>$v){  
  15.         $simxml->addChild($k,$v);  
  16.     }  
  17.     //返回xml資料
  18.     header('Content-type:text/xml;charset=utf-8');  
  19.     return$simxml->saveXML();  
  20. }  
  21. echo arr2xml($arr);//輸出到瀏覽器
  22. ?>  

輸出結果:


(2)多維資料轉換為XML

程式碼:

  1. <?php  
  2. /** 
  3.  * 多維陣列轉xml 
  4.  * @author webbc 
  5.  */
  6. $arr = array(  
  7.     'name' => 'webbc',  
  8.     'age' => '22',  
  9.     'job' => array(  
  10.         'title' => '銷售經理',  
  11.         'salary' => '12K',  
  12.         'team' => array('小明','小華','小林')  
  13.     )  
  14. );//要轉換的多維陣列資訊
  15. //轉換函式
  16. function arr2xml($arr,$parentNode=null){  
  17.     //如果父節點為null,則建立root節點,否則就使用父節點
  18.     if($parentNode === null){  
  19.         $simxml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><root></root>');  
  20.     }else{  
  21.         $simxml = $parentNode;  
  22.     }  
  23.     //遍歷陣列
  24.     foreach($arras$k=>$v){  
  25.         if(is_array($v)){//如果是陣列的話則繼續遞迴呼叫,並以該鍵值建立父節點
  26.             arr2xml($v,$simxml->addChild($k));  
  27.         }elseif(is_numeric($k)){//如果鍵值是數字,不能使用純數字作為XML的標籤名,所以此處加了'item'字元,這個字元可以自定義
  28.             $simxml->addChild('item'.$k,$v);  
  29.         }else{//新增節點
  30.             $simxml->addChild($k,$v);  
  31.         }  
  32.     }  
  33.     //返回資料
  34.     header('Content-type:text/xml;charset=utf-8');  
  35.     return$simxml->saveXML();  
  36. }  
  37. echo arr2xml($arr);//輸出
  38. ?>  

輸出結果:


注意:純數字不能作為xml的標籤名,所以如果遇到索引陣列,就必須使用字元來建立xml標籤!

相關推薦

XML陣列相互轉換

在實際的開發中,可能會經常將XML資料和陣列之間來回的轉換。如果是XML資料轉換為陣列,這樣比較方便讀取;陣列轉換為XML這種應用場景更為多見,如果我們某一天要寫XML的介面,這一步肯定是必須要做的,通常我們從資料庫中查詢到的資料是陣列,我們必須將陣列轉化為XML資料,然後將

JAVA 實現XMLJSON 相互轉換

tst throws light getc con parent urn In 工作 原文地址https://blog.csdn.net/congcong68/article/details/39029907 在工作中,經常碰到XML轉為JSON或者JSON轉為XML,在這

List陣列相互轉換

本篇文章介紹list與一維陣列之間的相互轉換關係: List---->陣列: 方法一:List<String> list =new ArrayList<String>();list.add("1");list.add("2");list.ad

java xmljson 相互轉換

需要json-lib-2.1-jdk15.jar和xom-1.2.5.jar,maven pom.xml如下: Xml程式碼   <dependency>    <groupId>net.sf.json-lib</groupId

xml陣列相互轉換——php

xml與陣列的相互轉換——php 1 xml轉換為陣列: a.xml: <?xml version="1.0" encoding="utf-8"?> <root> <title> <arr> <b>

java字元陣列字串相互轉換

1.字串轉化為字元陣列 public class Hello { public static void main(String args[]){ Scanner input = new Scanner(System.in); String str="abc";

php 陣列URL相互轉換

php為了陣列與url引數相互轉換提供了兩個函式: 1,陣列轉換為帶&的URL的字串   例如: $arr =['title'=>'我是小白','name'=>'真的很白','text'=>'但是決不放棄'];$res =urldecode(http_build_query($

xml陣列相互轉換

//陣列轉字串方法 protected function arrayToXml($arr) { $xml = "<xml>"; foreach ($arr as $key => $val) { if (is_numeric($val)) {

php xml陣列轉換問題,封裝方法及字串替換

/** * [將xml轉為array] * @param string $xml xml字串或者xml檔名 * @param bool $isFile 傳入的是否是xml檔名 * @re

java中陣列List相互轉換的方法

1.List轉換成為陣列。(這裡的List是實體是ArrayList)   呼叫ArrayList的toArray方法。   toArray   public <T> T[] toArray(T[] a)返回一個按照正確的順序包含此列表中所有元素的陣列;返回陣列

C# String Char[] 陣列 相互轉換

string 轉換成 Char[]   string ss = "abcdefg";   char[] cc = ss.ToCharArray(); Char[] 轉換成string   string s = new string(cc); byte[] 與 string

CString TCHAR陣列相互轉換

TCHAR陣列轉到CString很簡單:使用CString的Format就行。     TCHAR m_buf[100] = _T("Hello");     CString str;     str.Format(L"%s",m_buf); 現在就來CString轉為TCHAR陣列,這個就有點

java關於物件(javabean)xml之間的相互轉換

今天我們要探討的一個問題是,如何將xml格式的字串轉換成物件,以及物件轉換成xml字串。 簡介 現如今,雖然資料的傳輸大部分都是用json格式來進行傳輸,但是xml畢竟也會有一些老的專案在進行使用,身為一個萬能的程式設計師。我們又怎能不會使

opencv1.0 iplimage二維陣列相互轉換

#include "stdafx.h" #include <cv.h> #include <highgui.h>   int main(int argc, char* argv[]) {     IplImage *src =

java中物件位元組陣列相互轉換

1.首先物件要繼承Serializable介面 將位元組轉換為物件 public static Object ByteToObject(byte[] bytes) { Object obj = null; try { // bytearray to obje

將字典轉換成變量, 字符串列表相互轉換

div 變量 pda span locals split blog nbsp tr1 將字典轉換成變量: >>> locals().update({‘a‘:1,‘b‘:2}) >>> a 1 >>> b 2 字符串與

Linux下ffmpeg的wavamr相互轉換

++ mpi 資料 linux href attr south 失敗 引用 轉載:http://blog.csdn.net/sanshipianyezi/article/details/78742621 轉載:http://blog.csdn.net/szfhy/arti

C#.net開發 ListDataTable相互轉換

inf columns serve property eat 這一 異常 bject 屬性 1、DataTable轉List集合 /// <summary> /// DataTable轉化為List集合 ///

python 列表字典相互轉換

bubuko 內置函數 sin 技術 for 分享圖片 ima 字符 復數類 1. 2個列表轉換為字典 #encoding=utf-8list1=["a","b","c"]list2=[1,2,3]d={}for i in range(len(list1)): d[l

PHP中XML陣列互相轉換的方法

轉換程式碼如下 //陣列轉XML function arrayToXml($arr) { $xml = "<xml>"; foreach ($arr as $key=>$val) {