ホームページ > バックエンド開発 > PHPチュートリアル > XML から配列への変換に関する問題

XML から配列への変換に関する問題

WBOY
リリース: 2016-06-13 13:37:28
オリジナル
717 人が閲覧しました

xml を配列に変換する問題
既存の xml は次のとおりです。

XML コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
<root>
<rows>
<errMsg text=""/>
<retValue text="true"/>
</rows>
<records>
<productno text="000321"/>
<billno text=""/>
<orderno text="D004410439"/>
<out_trade_no text="100001"/>
<plcprem text="0.0"/>
<orderprem text="50.0"/>
<commision text="0.0"/>
</records>
....
<root>

ログイン後にコピー

xml の深さは不明ですが、各ノードにはテキスト属性が必要です。次の配列に変換するには、何か良い方法はありますか
PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
Array
(
    [rows] => Array
        (
            [errMsg] => 
            [retValue] => true
        )
    [records] => Array
        (
            [productno] =>000321
            [billno] =>
            [orderno] =>D004410439
            [out_trade_no] => 100001
            [plcprem] =>0.0
            [orderprem] =>50.0
            [commision] =>0.0
        )
        .....
)


ログイン後にコピー


-----解決策------ ------- ------
これを見てください

http://weblog.thomassmart.com/2008/09/php-function-xml2array/
------解決策------------------
PHP コード
$s =<<<
<ルート>
<行>
<errMsg text=""/>
<retValue text="true"/>
</行>
<記録>
<製品番号テキスト="000321"/>
<請求書テキスト=""/>
<orderno text="D004410439"/>
<out_trade_no text="100001"/>
<plcprem text="0.0"/>
<orderprem text="50.0"/>
<コミッションテキスト="0.0"/>
</レコード>
</root>
XML。
$obj = simplexml_load_string($s);
$r = 配列();
foreach($obj as $name=>$nodes) {
  foreach($nodes as $k=>$v) {
    $t = (配列)$v->属性()->テキスト;
    $r[$name][$k] = $t[0];
  }
}
print_r($r);
<br><font color="#e78608">------解決策---------</font><br>
ログイン後にコピー
話し合う
PHP コード
$s =<<


< text="true"/>





……
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート