ホームページ >バックエンド開発 >PHPチュートリアル >array2xml と xml2array、xml と array_PHP 間の相互変換計画チュートリアル

array2xml と xml2array、xml と array_PHP 間の相互変換計画チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:50:06751ブラウズ

PHP がバックエンド サーバーとして動作している場合、フロントエンドから XML ファイルを解析し、XML 形式でデータを返す必要があることがよくあります。この場合、XML と連想配列の間で変換が行われます。 PHP は非常に頻繁に使用されます。たとえば、flex やその他のクライアント プログラムは、多くの場合、このメソッドを使用してサーバーと対話します。以下にまとめた 2 つの方法は、XML と配列の変換の作業負荷を大幅に簡素化します。
[php]
/**
*
* 単純な配列を単純な XML に変換します
* @param string $data 変換される配列
* @param string $tag 使用するタグ
* @example
* $arr = 配列(
'rtxAccount'=>'aaron','ipAddr'=>'192.168.0.12',
'conferenceList'=>array('conference'=>
配列(
array('conferenceId'=>1212,'conferenceTitle'=>'quanshi 444','smeAccount'=>'bingxu.dong@quanshi.com'),
array('conferenceId'=>454,'conferenceTitle'=>'quanshi会議','smeAccount'=>'bingxu.dong@quanshi.com'),
array('conferenceId'=>6767,'conferenceTitle'=>'quanshi会議','smeAccount'=>'bingxu.dong@quanshi.com'),
array('conferenceId'=>232323,'conferenceTitle'=>'quanshi uuu','smeAccount'=>'bingxu.dong@quanshi.com'),
array('conferenceId'=>8989,'conferenceTitle'=>'quanshi会議','smeAccount'=>'bingxu.dong@quanshi.com'),
array('conferenceId'=>1234343212,'conferenceTitle'=>'quanshi会議','smeAccount'=>'bingxu.dong@quanshi.com')
)
)

                                                                                       );
に変換:
                                                                                                      192.168.0.12                                                                                                                                                                                                                                                                                                                              < conferenceTitle> quanshi 444</conferenceTitle>
                bingxu.dong@quanshi.com
           
           
                454
                全市会議
                bingxu.dong@quanshi.com
           
           
                6767
                全市会議
                bingxu.dong@quanshi.com
           
           
                232323
                クァンシうぅ
                bingxu.dong@quanshi.com
           
           
                8989
                全市会議
                bingxu.dong@quanshi.com
           
           
                1234343212
                全市会議
                bingxu.dong@quanshi.com
           
       
     */
    関数 array2xml($data,$tag = '')
    {
        $xml = ''; 
         
        foreach($data as $key => $value)
        {
            if(is_numeric($key))
            {
                if(is_array($value))
                {
                    $xml .= ""; 
                    $xml .= array2xml($value); 
                    $xml .=""; 
                }
                その他
                {
                    $xml .= "<$tag>$value"; 
                }
            }
            その他
            {
                if(is_array($value))
                {
                    $keys = array_keys($value); 
                    if(is_numeric($keys[0]))
                    {
                        $xml .=array2xml($value,$key); 
                    }
                    その他
                    {
                        $xml .= ""; 
                        $xml .=array2xml($value); 
                        $xml .= ""; 
                    }
                     
                }
                その他
                {
                    $xml .= "<$key>$value"; 
                }
            }
        }
        $xml を返します。 
    }
}

xml2配列

[php]
/**
*
* 単純な XML を連想配列に変換します
* @param string $xmlString xml string
* @example
*

IT 交流会
2011-12-19 12:00:00
andy1111111
192.168.1.56
120期間>
1

                                                                                          &lt; rtxaccount&gt; invitee 1のRTXアカウント&lt;/rtxaccount&gt;
& Lt; 電話番号 & gt; 招待者 1 電話番号 & lt;/電話番号 & gt;                                                                                                                                                                                         &lt; rtxaccount&gt; invitee 2のRTXアカウント&lt;/rtxaccount&gt;
& Lt; 電話番号 & gt; 招待者 2 電話番号 & lt;/電話番号 & gt;                                                                                              

変換後の連想配列:
配列
(
[会議タイトル] => IT 交換カンファレンス www.2cto.com
[開始時間] => 2011-12-19 12:00:00
[rtxアカウント] =>andy1111111
[ipAddr] => 192.168.1.56
[期間] => 120
[会議の種類] => 1
[招待者] => 配列
(
[招待者] => 配列
(
以来 (
[rtxAccount] => 招待者 1 の RTX アカウント
[電話] => 招待者 1 の電話番号
)

以来 (
[rtxAccount] => 招待者 2 の RTX アカウント
[電話] => 招待者 2 の電話番号
)

)

)

)
​​*/
    関数 xml2array($xmlString = '')
    {
        $targetArray = 配列(); 
        $xmlObject = simplexml_load_string($xmlString); 
        $mixArray = (配列)$xmlObject; 
        foreach($mixArray as $key => $value)
        {
            if(is_string($value))
            {
                $targetArray[$key] = $value; 
            }
            if(is_object($value))
            {
                $targetArray[$key] = xml2array($value->asXML()); 
            }
            if(is_array($value))
            {
                foreach($value as $zkey => $zvalue)
                {
                    if(is_numeric($zkey))
                    {
                        $targetArray[$key][] = xml2array($zvalue->asXML()); 
                    }
                    if(is_string($zkey))
                    {
                        $targetArray[$key][$zkey] = xml2array($zvalue->asXML()); 
                    }
                }
            }
        }
        $targetArray を返します。 
         
    }


抜粋 andy1219111 の专栏

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/478300.html技術記事 php 在做后台服务器的時候,常会遭遇这种情况,解析必要来来台的 xml 文件,并推データ以 xml 格式返還,在此情况下,xml 与php中关联数组...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。