本文目錄一覽:
- 1、php讀取XML文件,並解析成數組
- 2、PHP中數組轉換為XML格式
- 3、PHP XML轉數組問題,求幫忙;
- 4、php 如何獲取XML 並轉成2維數組
- 5、PHP xml轉換成數組
- 6、php 將xml對象轉換成數組,看不明白function simplexml_obj2array函數,請高人解釋思路?
php讀取XML文件,並解析成數組
simplexml_load_string可以把xml解析成對象,然後可以用var_dump進行解析。
php內部庫並沒有包含直接把xml解析成數組的模塊。
而且xml本來包含節點概念,解析成對象以後可以直接訪問每一個節點,而數組相對就要難以理解的多。
因此解析成數組並不比解析成對象有多少優勢。
如果你對數組實在有需求的話,可以自己寫一個庫,並不會太難。
PHP中數組轉換為XML格式
最近公司要做一個API接口 輸出格式要有JSON與XML格式 在PHP中 輸入JSON直接json_encode就可以 但輸出XML沒有提供函數 於是決定自己寫一個
?php
/**
* 數組轉XML類庫
*
* @filesource ArrayToXML php
* @author genolf
* @version / /
*
* 使用說明
* echo ArrayToXml::parse($array root );
*/
class ArrayToXML {
//文檔對象
private static $doc = NULL;
//版本號
private static $version = ;
/**
* 初始化文檔版本及編碼
*
* @param string $version 版本號
* @param string $encoding XML編碼
*/
public static function init($version $encoding) {
self::$doc = new DomDocument($version $encoding);
self::$doc formatOutput = true;
}
/**
* 轉換數組到XML
*
* @param array $array 要轉換的數組
* @param string $rootName 要節點名稱
* @param string $version 版本號
* @param string $encoding XML編碼
*
* @return string
*/
public static function parse($array $rootName = root $version = $encoding = UTF ) {
self::init($version $encoding);
//轉換
$node = self::convert($array $rootName);
self::$doc appendChild($node);
return self::$doc saveXML();
}
/**
* 遞歸轉換
*
* @param array $array 數組
* @param string $nodeName 節點名稱
*
* @return object (DOMElement)
*/
private static function convert($array $nodeName) {
if (!is_array($array)) return false;
//創建父節點
$node = self::createNode($nodeName);
//循環數組
foreach ($array as $key = $value) {
$element = self::createNode($key);
//如果不是數組 則創建節點的值
if (!is_array($value)) {
$element appendChild(self::createValue($value));
$node appendChild($element);
} else {
//如果是數組 則遞歸
$node appendChild(self::convert($value $key $element));
}
}
return $node;
}
private static function createNode($name) {
$node = NULL;
//如果是字符串 則創建節點
if (!is_numeric($name)) {
$node = self::$doc createElement($name);
} else {
//如果是數字 則創建默認item節點
$node = self::$doc createElement( item );
}
return $node;
}
/**
* 創建文本節點
*
* @param string || bool || integer $value
*
* @return object (DOMText || DOMCDATASection );
*/
private static function createValue($value) {
$textNode = NULL;
//如果是bool型 則轉換為字符串
if (true === $value || false === $value) {
$textNode = self::$doc createTextNode($value ? true : false );
} else {
//如果含有HTML標籤 則創建CDATA節點
if (strpos($value ) ) {
$textNode = self::$doc createCDATASection($value);
} else {
$textNode = self::$doc createTextNode($value);
}
}
return $textNode;
}
lishixinzhi/Article/program/PHP/201311/20849
PHP XML轉數組問題,求幫忙;
看看這樣輸出什麼
if (file_exists(‘test.xml’))
{
$xml = simplexml_load_file(‘XML文件名’);
var_dump($xml);
}
然後就是數組轉換了
php 如何獲取XML 並轉成2維數組
?php
/**
* 功能:解析xml數據轉換成二維數組
*
* @param string $dataXml
* @return array
*/
public static function getXmlData ( $strXml ) {
$pos = strpos($strXml, ‘xml’);
if ($pos) {
$xmlCode =simplexml_load_string($strXml,’SimpleXMLElement’, LIBXML_NOCDATA);
$arrayCode=self::get_object_vars_final($xmlCode);
return $arrayCode ;
} else {
return ”;
}
}
?
PHP xml轉換成數組
xml轉array方法沒錯,只是xml中有三個list,而數組中卻不能出現三個$arr[‘list’],所以這個方法自動把三個list中的內容放進了一個二維數組中。
可以嘗試直接取$arr[‘list’],取出結果應該就是 Array ( [0] = 1 [1] = 2 [2] = 3 ) 了。
php 將xml對象轉換成數組,看不明白function simplexml_obj2array函數,請高人解釋思路?
instanceof 用來檢查前面的對象是否是後面這個類的實例,如果是則強制轉換為數組
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/312830.html