php數組轉換xml
A. 新手求助高手解決 php數組轉換XML問題,研究好久都不行.
<?php
$team=array(
'id'=>'22955',
'video_order_id'=>'22955',
'is_audio'=>'0',
'status_format'=>'待審核',
'ftp_path'=>'2013/1374/5695/2479/137456952479.ssm/',
'lists'=>array(array('PreviewMTA'=>'A','PreviewMTB'=>'B')),
'lists1'=>array(array('PreviewMTA'=>'B'))
);
echosaveXML($team);
functionsaveXML($arr,$root='response'){
if(!preg_match('/[a-zA-Z][a-zA-Z0-9_]/',$root)){
$root='response';
}
$xml=newDOMDocument('1.0','UTF-8');
$xml->formatOutput=true;
$response=$xml->createElement($root);
$xml->appendChild($response);
foreach($arras$key=>$value){
if(is_array($value)){
$first=$xml->createElement($key);
_createElement($value,$first,$xml);
}else{
$first=$xml->createElement($key,$value);
}
$response->appendChild($first);
}
return$xml->saveXML();
//$xml->save('create_xml.xml');
}
function_createElement($arr,$parentDom,&$xml){
foreach($arras$value){
$list=$xml->createElement('list');
foreach($valueas$k=>$val){
if(is_array($val)){
$dom=$xml->createElement($k);
_createElement($val,$dom,$xml);
}else{
$dom=$xml->createElement($k,$val);
}
$list->appendChild($dom);
}
$parentDom->appendChild($list);
}
}
?>
可能和你要的結果有偏離
B. php 怎麼將數組轉xml的函數
沒有現成函數,只能自己寫;我有一個別人寫的函數:
<?php
class A2Xml {
private $version = '1.0';
private $encoding = 'UTF-8';
private $root = 'root';
private $xml = null;
function __construct() {
$this->xml = new XmlWriter();
}
function toXml($data, $eIsArray=FALSE) {
if(!$eIsArray) {
$this->xml->openMemory();
$this->xml->startDocument($this->version, $this->encoding);
$this->xml->startElement($this->root);
}
foreach($data as $key => $value){
if(is_array($value)){
$this->xml->startElement($key);
$this->toXml($value, TRUE);
$this->xml->endElement();
continue;
}
$this->xml->writeElement($key, $value);
}
if(!$eIsArray) {
$this->xml->endElement();
return $this->xml->outputMemory(true);
}
}
}
$res = array(
'hello' => '11212',
'world' => '232323',
'array' => array(
'test' => 'test',
'b' => array('c'=>'c', 'd'=>'d')
),
'a' => 'haha'
);
$xml = new A2Xml();
echo $xml->toXml($res);
C. PHP如何將數組寫入XML請直接提供代碼。感謝!!!
<?php
$imgdir = '你存放圖片的文件夾';
$logfile = '你要寫入的文件名';
$submit = $_POST['submit'];
if($submit == 'write'){
include('lib/write.class.php');
$wt = new writeTo();
$wt->while($imgdir,$logfile);
}
?>
<input type = 'submit' name = 'submit' value = 'write'>
這個是前提文件
下面的是類文件
<?php
class writeTo{
function isjpg($filename){
/*
用來判斷是否是 .jpg結尾的文件 由於本機器無JPG 所以使用PHP
代替了JPG 你自己使用的時候請自行替換
*/
if(preg_match('/\.php$/',$filename)){
return true;
}
false;
}
function listjpg($dir){//查看文件夾內的所有JPG文件名並存入數組
$arr = array();
if(is_dir($dir)){
$dp=dir($dir);
while($file=$dp->read()){
if($this->isjpg($file)){
$arr[substr($file,0,(strlen($file)-4))] = $file;
}
}
}
$dp->close();
return $arr;
}
function write($dir,$filename){//利用前面生成的數字重寫文件
if($link = fopen($filename,'w+')){
//由於使用W+所以如果存在該文件請給予讀寫許可權 如不存在則程序自動建立
$str = "<?xml version='1.0' encoding='utf-8'?>\n";
$str .= " <path>\n";
$arr = $this->listjpg($dir);
foreach($arr as $key => $v){
$str .= " <url info=".$key.">pic/".$v."</url>\n";
}
$str .= " <\path>\n";
if(fwrite($link,$str)){
fclose($link);
return true;
}
return false;
}
return false;
}
}
D. 我想這樣用PHP操作XML文件,如下圖
把xml轉成數組,操作數組,再把數組轉成xml
E. 多維PHP數組怎麼轉換成xml格式的數據
public function arrayToXml($arr){
$xml = "<xml>";
foreach ($arr as $key=>$val){
if(is_array($val)){
$xml.="<".$key.">".arrayToXml($val)."</".$key.">";
}else{
if (is_numeric($val)){
$xml.="<".$key.">".$val."</".$key.">";
}else{
$xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
}
}
}
$xml.="</xml>";
return $xml;
}
F. php json 轉 xml,從資料庫調取的內容怎麼轉換為xml格式輸出,之前弄得是json,不會轉,新手。
可以直接用文本讀寫方式,json 先用eval 解析,之後慢慢拼湊出xml格式的文件,寫入文件就行了
G. php中發布webservice的時候如何將數組轉換成XML格式輸出
直接用json不是更好
H. PHP xml轉換成數組
xml轉array方法沒錯,只是xml中有三個<list>,而數組中卻不能出現三個$arr['list'],所以這個方法自動把三個<list>中的內容放進了一個二維數組中。
可以嘗試直接取$arr['list'],取出結果應該就是 Array ( [0] => 1 [1] => 2 [2] => 3 ) 了。
I. php如何通過xml傳遞數據
獲取request中body的字元串數據,比如一個數組轉成xml後,你用post方式給伺服器發送xml的字元串,伺服器就用file_get_contents('php://input') 去讀取xml格式 然後轉成數組即可
J. 求一個PHP把一維數組轉化為xml格式和再從xml格式轉回一維數組的方法,求示例代碼。謝謝。
代碼
Code highlighting proced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->// Xml 轉 數組, 包括根鍵,忽略空元素和屬性,尚有重大錯誤
function xml_to_array( $xml )
{
$reg = "/<(\\w+)[^>]*?>([\\x00-\\xFF]*?)<\\/\\1>/";
if(preg_match_all($reg, $xml, $matches))
{
$count = count($matches[0]);
$arr = array();
for($i = 0; $i < $count; $i++)
{
$key= $matches[1][$i];
$val = xml_to_array( $matches[2][$i] ); // 遞歸
if(array_key_exists($key, $arr))
{
if(is_array($arr[$key]))
{
if(!array_key_exists(0,$arr[$key]))
{
$arr[$key] = array($arr[$key]);
}
}else{
$arr[$key] = array($arr[$key]);
}
$arr[$key][] = $val;
}else{
$arr[$key] = $val;
}
}
return $arr;
}else{
return $xml;
}
}
// Xml 轉 數組, 不包括根鍵
function xmltoarray( $xml )
{
$arr = xml_to_array($xml);
$key = array_keys($arr);
return $arr[$key[0]];
}