XML與陣列相互轉換
在實際的開發中,可能會經常將XML資料和陣列之間來回的轉換。如果是XML資料轉換為陣列,這樣比較方便讀取;陣列轉換為XML這種應用場景更為多見,如果我們某一天要寫XML的介面,這一步肯定是必須要做的,通常我們從資料庫中查詢到的資料是陣列,我們必須將陣列轉化為XML資料,然後將其返回。
1、XML轉陣列
步驟:(1)首先使用SimpleXML將xml檔案轉換為物件
(2)由於這個物件中既有陣列,陣列內又包含物件,我們使用遞迴將每一個物件強轉成陣列
轉換程式碼:
- <?php
- /**
- * XML轉換成陣列
- * @author webbc
- */
- function xml2arr($simxml){
- $simxml = (array)$simxml;//強轉
- foreach($simxmlas$k => $v){
- if(is_array($v) || is_object($v)){
- $simxml[$k] = xml2arr($v);
- }
- }
- return$simxml;
- }
- $simxml = simplexml_load_file('./06.xml');
- //這個物件中既有陣列,又有物件,使用起來不怎麼方便,可以嘗試將這個物件轉換成陣列
- //print_r($simxml);
- print_r(xml2arr($simxml
- ?>
06.xml檔案:
轉換前:
這個物件中既有陣列,陣列中又包含了物件
轉換後:
將這個物件中的所有物件全轉換成陣列
2、陣列轉換為XML
(1)一維陣列轉換為XML資料
程式碼:
- <?php
- /**
- * 一維陣列轉xml
- * @author webbc
- */
- $arr = array(
- 'name' => 'webbc',
- 'age' => '22',
- );//要轉換的陣列
- //轉換函式
- function arr2xml($arr){
- $simxml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><root></root>'
- //遍歷陣列,迴圈新增到root節點中
- foreach($arras$k=>$v){
- $simxml->addChild($k,$v);
- }
- //返回xml資料
- header('Content-type:text/xml;charset=utf-8');
- return$simxml->saveXML();
- }
- echo arr2xml($arr);//輸出到瀏覽器
- ?>
輸出結果:
(2)多維資料轉換為XML
程式碼:
- <?php
- /**
- * 多維陣列轉xml
- * @author webbc
- */
- $arr = array(
- 'name' => 'webbc',
- 'age' => '22',
- 'job' => array(
- 'title' => '銷售經理',
- 'salary' => '12K',
- 'team' => array('小明','小華','小林')
- )
- );//要轉換的多維陣列資訊
- //轉換函式
- function arr2xml($arr,$parentNode=null){
- //如果父節點為null,則建立root節點,否則就使用父節點
- if($parentNode === null){
- $simxml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><root></root>');
- }else{
- $simxml = $parentNode;
- }
- //遍歷陣列
- foreach($arras$k=>$v){
- if(is_array($v)){//如果是陣列的話則繼續遞迴呼叫,並以該鍵值建立父節點
- arr2xml($v,$simxml->addChild($k));
- }elseif(is_numeric($k)){//如果鍵值是數字,不能使用純數字作為XML的標籤名,所以此處加了'item'字元,這個字元可以自定義
- $simxml->addChild('item'.$k,$v);
- }else{//新增節點
- $simxml->addChild($k,$v);
- }
- }
- //返回資料
- header('Content-type:text/xml;charset=utf-8');
- return$simxml->saveXML();
- }
- echo arr2xml($arr);//輸出
- ?>
輸出結果:
注意:純數字不能作為xml的標籤名,所以如果遇到索引陣列,就必須使用字元來建立xml標籤!
相關推薦
XML與陣列相互轉換
在實際的開發中,可能會經常將XML資料和陣列之間來回的轉換。如果是XML資料轉換為陣列,這樣比較方便讀取;陣列轉換為XML這種應用場景更為多見,如果我們某一天要寫XML的介面,這一步肯定是必須要做的,通常我們從資料庫中查詢到的資料是陣列,我們必須將陣列轉化為XML資料,然後將
JAVA 實現XML與JSON 相互轉換
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 xml與json 相互轉換
需要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的wav與amr相互轉換
++ mpi 資料 linux href attr south 失敗 引用 轉載:http://blog.csdn.net/sanshipianyezi/article/details/78742621 轉載:http://blog.csdn.net/szfhy/arti
C#.net開發 List與DataTable相互轉換
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) {