ホームページ  >  記事  >  バックエンド開発  >  PHP は配列と XML の間の変換を処理します

PHP は配列と XML の間の変換を処理します

高洛峰
高洛峰オリジナル
2016-12-22 14:48:391006ブラウズ

開発では、特にインターフェイス開発を扱う場合、配列と XML 間の変換が頻繁に発生します。たとえば、他のクライアントがデータを XML 形式でサーバーに POST する場合、サーバー上のプログラムが分析を受け取る必要があります。データ テーブル データも XML 形式でサードパーティ アプリケーションに提供する必要があります。
この記事では、PHP を使用して配列と XML 間の変換を処理する方法を簡単に紹介します。

PHP は配列を XML に変換します
PHP は配列を XML 形式に変換できます。簡単な方法は、配列を走査し、配列のキー/値を XML ノードに変換し、次のように出力を直接エコーすることです。

テストしてみたところ、これが最もシンプルで高速で、主に配列をサポートしており、中国語の文字化けはありません。

もう 1 つの方法は、DOMDocument を使用して XML 構造を生成することです:

function arrayToXml($arr){
$xml = "<root>";
foreach ($arr as $key=>$val){
if(is_array($val)){
$xml.="<".$key.">".arrayToXml($val)."</".$key.">";
}else{
$xml.="<".$key.">".$val."</".$key.">";
}
}
$xml.="</root>";
return $xml;
}

配列を XML に変換することもでき、多次元配列をサポートしており、生成された中国語の XML は文字化けしません。

PHP は XML を配列に変換します

インターフェース開発をしていると、一般的な WeChat インターフェースや Alipay インターフェースなど、メッセージの送信や通信などのインターフェースはすべて XML 形式で送信されることがあります。 . の場合、まずこの XML データを取得する方法を見つけてから、それを配列に変換します。
次のような XML を取得したとします。

function arrayToXml($arr,$dom=0,$item=0){
if (!$dom){
$dom = new DOMDocument("1.0");
}
if(!$item){
$item = $dom->createElement("root");
$dom->appendChild($item);
}
foreach ($arr as $key=>$val){
$itemx = $dom->createElement(is_string($key)?$key:"item");
$item->appendChild($itemx);
if (!is_array($val)){
$text = $dom->createTextNode($val);
$itemx->appendChild($text);
 
}else {
arrayToXml($val,$dom,$itemx);
}
}
return $dom->saveXML();
}

simplexml_load_string() 解析を通じて XML データを読み取り、まず JSON 形式に変換し、次に配列に変換します。

<root>
 
<user>
 
月光光abcd</user>
 
<pvs>13002</pvs>
 
 <ips>
 
<baidu_ip>1200</baidu_ip>
 
 <google_ip>1829</google_ip>
 
 </ips>
 
<date>2016-06-01</date>
 
 </root>

xmlToArray() を呼び出して、次の結果を取得します。

PHP は配列と XML の間の変換を処理します

配列を取得した後、データに対してさまざまな処理を実行できます。


以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。また、皆さんも PHP 中国語 Web サイトをサポートしていただければ幸いです。

PHP 処理配列と XML の間の変換に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。