jsonをPHPのxmlに変換する方法はありますか?私はjsonへのXMLが非常に可能であることを知っています。jsonをPHPでxmlに変換する方法はありますか?
答えて
これは、XMLをどのように表示したいかによって異なります。 json_decode()
とPEAR::XML_Serializer
(more info and examples on sitepoint.com)の組み合わせを試してみます。
require_once 'XML/Serializer.php';
$data = json_decode($json, true)
// An array of serializer options
$serializer_options = array (
'addDecl' => TRUE,
'encoding' => 'ISO-8859-1',
'indent' => ' ',
'rootName' => 'json',
'mode' => 'simplexml'
);
$Serializer = &new XML_Serializer($serializer_options);
$status = $Serializer->serialize($data);
if (PEAR::isError($status)) die($status->getMessage());
echo '<pre>';
echo htmlspecialchars($Serializer->getSerializedData());
echo '</pre>';
(未テストコード - しかし、あなたのアイデアを得る)
AckのようなJSONにはまだ存在しない多くの機能があります。私はとにかく私のままにしておきます - それはやや異なるアプローチです。 –
あなたがPEARからXML Serializerを使用するために喜んでいる場合は、中にXMLにPHPオブジェクトとその後、PHPオブジェクトにJSONに変換することができます2つの簡単な手順:
include("XML/Serializer.php");
function json_to_xml($json) {
$serializer = new XML_Serializer();
$obj = json_decode($json);
if ($serializer->serialize($obj)) {
return $serializer->getSerializedData();
}
else {
return null;
}
}
亀裂がjson_decode
でJSONを開いて、あなたが好きなXMLを生成し、それを通過します。
あなたが疑問に思っている場合は、JSONとXMLの間に標準的なマッピングがないため、アプリケーションのニーズに応じてXML生成コードを自分で記述する必要があります。
私はに2つの以前の提案を組み合わせる:
/**
* Convert JSON to XML
* @param string - json
* @return string - XML
*/
function json_to_xml($json)
{
include_once("XML/Serializer.php");
$options = array (
'addDecl' => TRUE,
'encoding' => 'UTF-8',
'indent' => ' ',
'rootName' => 'json',
'mode' => 'simplexml'
);
$serializer = new XML_Serializer($options);
$obj = json_decode($json);
if ($serializer->serialize($obj)) {
return $serializer->getSerializedData();
} else {
return null;
}
}
私にとって完璧です。乾杯。 – wired00
ネイティブapprochは別のオプションは、JSON streaming parserを使用することです
function json_to_xml($obj){
$str = "";
if(is_null($obj))
return "<null/>";
elseif(is_array($obj)) {
//a list is a hash with 'simple' incremental keys
$is_list = array_keys($obj) == array_keys(array_values($obj));
if(!$is_list) {
$str.= "<hash>";
foreach($obj as $k=>$v)
$str.="<item key=\"$k\">".json_to_xml($v)."</item>".CRLF;
$str .= "</hash>";
} else {
$str.= "<list>";
foreach($obj as $v)
$str.="<item>".json_to_xml($v)."</item>".CRLF;
$str .= "</list>";
}
return $str;
} elseif(is_string($obj)) {
return htmlspecialchars($obj) != $obj ? "<![CDATA[$obj]]>" : $obj;
} elseif(is_scalar($obj))
return $obj;
else
throw new Exception("Unsupported type $obj");
}
素敵なスクリプト、ありがとう。 – Zsolti
かもしれません。
json_decode
を使用しているときにPHPで作成された中間オブジェクトグラフをバイパスしたい場合は、ストリーマパーサーを使用すると便利です。たとえば、大きなJSONドキュメントを取得してメモリが問題になった場合、ストリーミングパーサーを使用してドキュメントを読み取っているときにXMLWriter
というXMLを直接出力できます。
一例はJSON2XMLリスナーがListener interfaceを実装する必要がありますhttps://github.com/salsify/jsonstreamingparser
$writer = new XMLWriter;
$xml->openURI('file.xml');
$listener = new JSON2XML($writer); // you need to write the JSON2XML listener
$stream = fopen('doc.json', 'r');
try {
$parser = new JsonStreamingParser_Parser($stream, $listener);
$parser->parse();
} catch (Exception $e) {
fclose($stream);
throw $e;
}
次のようになります。
interface JsonStreamingParser_Listener
{
public function start_document();
public function end_document();
public function start_object();
public function end_object();
public function start_array();
public function end_array();
public function key($key);
public function value($value);
}
実行時には、リスナーは、例えば、パーサからさまざまなイベントを受信しますパーサーがオブジェクトを見つけると、データはstart_object()
メソッドに送信されます。アレイが見つかると、start_array()
などがトリガーされます。これらのメソッドでは、値をXMLWriter
の適切なメソッドに委譲します。 start_element()
など。
免責事項:私は著者と提携しておらず、以前にこのツールを使用したこともありません。私はこのライブラリを選んだので、イベントベースのJSONパーサーの使い方を説明するのにAPIが十分に簡単に見えたからです。
- 1. xmlからjsonに変換する方法はありますか?
- 2. XMLページをPHP経由で自動的にJSONに変換する方法はありますか?
- 3. XML :: TwigオブジェクトをXML :: XPathオブジェクトに変換する方法はありますか?
- 4. オンラインのJSONからXMLへの変換はありますか?
- 5. xmlをネイティブDLL(json)でjsonに変換する方法
- 6. JSONP形式をJSON形式に変換する方法はありますか?
- 7. JSONスキーマをXSDに変換する方法はありますか?
- 8. xhtmlをjsonに変換する良い方法はありますか?
- 9. RubyコードをPHPに簡単に変換する方法はありますか?
- 10. phpで通貨を変換する簡単な方法はありますか?
- 11. PHPでjsonにsqlを変換する方法は?
- 12. JavaScript(JavaScript)でXML(SOAP)をJSONオブジェクトに変換する方法
- 13. gltfをdaeに変換する方法はありますか?
- 14. テキストをコードに変換する方法はありますか?
- 15. Controls.ContextMenuをForms.ContextMenuに変換する方法はありますか?
- 16. アクセスレポートをクリスタルレポートに変換する方法はありますか?
- 17. SWFをHTML5に変換する方法はありますか
- 18. DependencyObjectをAutomationElementに変換する方法はありますか
- 19. xcarchiveをxcodeworkspaceに変換する方法はありますか?
- 20. ゲームアセットをピクセルアートに変換する方法はありますか?
- 21. XMLをiOSでJSONに変換する
- 22. PHP変数をXMLに変換する方法
- 23. HEIFをJPEGに変換するPHPライブラリはありますか?
- 24. swiftでxmlとjsonデータを変換する方法3
- 25. jsonをxmlに変換する方法c#
- 26. JsonをXmlに変換する最も簡単な方法
- 27. XMLコードをJSON形式に変換する方法
- 28. Web APIはXMLをJsonに変換できますか?
- 29. Djangoモデルのクエリーセットをjsonやjsonの文字列に変換する方法はありますか?
- 30. TimePrimitiveをintへ変換する方法はありますか?
さらに重要なこと:なぜあなたはそれをやりたいのですか? – NikiC
'$ xml =" "! "; '(愚かな質問...) –
salathe
Zend Frameworkは非常にうまく動作しています[コンポーネント](http://framework.zend.com /manual/en/zend.json.xml2json.html)を参照してください。 – markus