まず第一に、昨日の 2 人の友人、jordan102 と xuzuning に感謝したいと思います。
投稿リンク: http://bbs.csdn.net/topics/390609227
彼らが提供したテスト方法は、確かに実行可能で実用的です。
しかし、プロジェクトの開発プロセス中に、このプロジェクトがあまりにも異常であることがわかり、まだそのような状況が続いています
PHP 配列:
$ar=array( "auth"=> array( "user"=> "user001", "password"=> "pass001", "context"=> "1" ), "task"=> array( "code"=>"0101", "item"=>array( "title"=>"abc", "web"=>array( "name"=>"baidu.com", "ip"=>"1.2.3.4", ), "web"=>array( "name"=>"sina.com", "ip"=>"1.1.1.1", ), "confirm order"=>"1", ), "reply_to"=>"info@xxx.com", ),);
$xml = simplexml_load_string('<request />');create($ar, $xml);$xmlData = $xml->saveXML();echo $xmlData;function create($ar, $xml) { foreach($ar as $k=>$v) { if(is_array($v)) { $x = $xml->addChild($k); create($v, $x); }else $xml->addChild($k, $v); }}
<?xml version="1.0"?><request> <auth> <user>user001</user> <password>pass001</password> <context>1</context> </auth> <task> <code>0101</code> <item> <title>abc</title> <web> <name>sina.com</name> <ip>1.1.1.1</ip> </web> <confirm order>1</confirm order> </item> <reply_to>info@xxx.com</reply_to> </task></request>
配列は存在せず、同じ次元の配列内に 2 つの同一のキー名が存在することはできません。
配列は存在しません。同じ次元配列内に 2 つの同一のキー名が存在することはできません。
しかし、相手は私の投稿の XML データ形式をこのように要求しており、他の方法が思いつきませんでした。
<?xml version="1.0"?><request> <auth> <user>user001</user> <password>pass001</password> <context>1</context> </auth> <task> <code>0101</code> <item> <title>abc</title> <web> <name>baidu.com</name> <ip>1.2.3.4</ip> </web> <web> <name>sina.com</name> <ip>1.1.1.1</ip> </web> <confirm order>1</confirm order> </item> <reply_to>info@xxx.com</reply_to> </task></request>
問題は、入場データとは何ですか?文章?ジソン?それは間違いなくあなたが示した配列ではありません
既製の array2xml クラスと json2xml クラスがたくさんあります
問題は、エントリ データが何なのかということです。文章?ジソン?それは間違いなくあなたが示した配列ではありません
既製の array2xml クラスと json2xml クラスがたくさんあります
私はあなたが言及したこれら 2 つのクラスを使用したことがありません、私は XML を初めて使用します
エントリデータは json ではなく xml 形式です。
相手には私が投稿したXML形式のデータを受け取るインターフェースがあり、その技術文書のスクリーンショットを見ると、その後ろにもnserverが2つ書いてあります。私はそれが間違っているはずだと思います
現在の問題は、配列を XML に変換する問題ではありませんが、配列を生成するときにすでに問題が発生しています。
言い換えれば、php の配列は元のデータを表現できなくなります (少なくとも、現在使用している方法では表現できません)
したがって、問題を解決するには、元のデータを投稿し、その表現を変更してください。
現在の問題は、配列を XML に変換する際の問題ではなく、その配列を生成するときの問題です。
言い換えれば、php の配列は元のデータを表現できなくなります (少なくとも、現在使用している方法では表現できません)
したがって、問題を解決するには、元のデータを投稿し、その表現を変更してください。
先ほど確認したところ、データをXMLデータに変換する前に、配列の値を表示するときに、名前が重複しているものが1つの項目になりました。
相手の入り口ではなく、あなたの入り口です。同じキーを持つことは不可能です
XML はそれほど複雑ではないようです。中国語や特殊文字のエスケープは必要ありません。XML に慣れていない場合は、文字列をループして連結して XML を生成することをお勧めします。もう少し簡単かもしれません。
さて、先輩の指導の後、それは確かに私がphp配列を作成して値を割り当てたときに定義したキー値の名前と同じであり、配列に問題が発生していることがわかりました。
今、私は愚かな解決策を見つけました。それは、最初にテキスト変数 $xmltext を定義し、相手が送信する必要がある XML データテキストをコピーし、置換が完了した後、置換されたテキストでいくつかの変数を使用することです。直接投稿すると、最初に配列を定義してから XML に変換する必要はありません。
はい、私は今この方法を使用しています
相手の入り口ではなく、あなたの入り口です。同じキーを持つことは不可能です
さて、先輩の指導の後、それは確かに私がphp配列を作成して値を割り当てたときに定義したキー値の名前と同じであり、配列に問題が発生していることがわかりました。
今、私は愚かな解決策を見つけました。それは、最初にテキスト変数 $xmltext を定義し、相手が送信する必要がある XML データテキストをコピーし、置換が完了した後、置換されたテキストでいくつかの変数を使用することです。直接投稿すると、最初に配列を定義してから XML に変換する必要はありません。
これは愚かなことではなく、実際には PHP テンプレートの方法です。ヘッダー>テキスト/xml を出力することを忘れないでください