दिलचस्प पोस्ट
प्रोग्रामेटिक रूप से अश्लील चित्रों का पता लगाने का सबसे अच्छा तरीका क्या है? वेबजीएल में पारदर्शी बनावटी व्यवहार क्या "./bin/www" एक्सप्रेस 4.x में करता है? सेगमेंटेड कंट्रोल बटन में सेगमेंट को फिर से क्लिक करने तक स्थायी रूप से अचयनित कैसे करें यूनिक्स सिस्टम पर सी ++ में सरल ग्लोब? सिंक्रनाइज़ ब्लॉक के बजाय सिंक्रनाइज़ किए गए विधि का उपयोग करने के लिए एक फायदा है? कैसे Matlab में एक बाइनरी छवि में सभी जुड़े घटकों को खोजने के लिए? कोई साफ संस्करण उपलब्ध नहीं के साथ एक हैक किए गए साइट को साफ करने के लिए सर्वोत्तम तरीकों? स्क्रीन लॉक होने पर गतिविधि कैसे प्रदर्शित होगी? "बिन / रेल: ऐसी कोई फ़ाइल या निर्देशिका नहीं" w / रूबी 2 और हरोको पर 4 रेल जावा – मैं एक फ़ाइल में मेरा ArrayList कैसे लिख सकता हूँ, और पढ़ें (लोड) जो मूल ArrayList पर फ़ाइल है? C ++ 11/14 के मूल्य में एक स्थानीय चरणीय लौटाए जा सकते हैं, जब कोई प्रतिलिपि / चाल शामिल नहीं है, तो रिवर्स वैल्यू के परिणामस्वरूप रॉल्यूवर द्वारा बनाए जा रहे हैं? स्ट्रिंग लिटलल्स और एस्केप कैरेक्टर इन पोस्टग्रेस्क्ल तीन। जेएस: स्थिति के रूप में एक ही सदिश का उपयोग करके 2x मेज़ TypeError: अविनाशी प्रकार: 'dict'

PHP में json को xml में बदलने का कोई तरीका है?

PHP में json को XML में बदलने का कोई तरीका है? मुझे पता है कि जेएमएल से जेएसएन बहुत संभव है।

Solutions Collecting From Web of "PHP में json को xml में बदलने का कोई तरीका है?"

यदि आप पीअर से एक्सएमएल सीरियललाइजर का उपयोग करने के लिए तैयार हैं, तो आप JSON को PHP ऑब्जेक्ट में परिवर्तित कर सकते हैं और फिर PHP को दो आसान चरणों में एक्सएमएल पर ऑब्जेक्ट बदल सकते हैं:

 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; } } 

यह इस पर निर्भर करता है कि आप वास्तव में XML को कैसा दिखना चाहते हैं। मैं json_decode() और PEAR::XML_Serializer ( 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>'; 

(अनचेस्टर कोड – लेकिन आपको यह विचार मिलता है)

क्रैक JSON को json_decode साथ खोलें, और इसे आप जो XML चाहते हैं, उत्पन्न करने के लिए इसे पार करें।

यदि आप सोच रहे हैं, तो JSON और XML के बीच कोई वैधानिक मानचित्रण नहीं है, तो आपको अपने अनुप्रयोग की आवश्यकताओं के आधार पर XML- पीढ़ी के कोड को स्वयं लिखना होगा।

मैंने पहले दो सुझावों को संयुक्त में जोड़ा:

 /** * 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; } } 

एक मूल भाव हो सकता है

 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"); } 

एक अन्य विकल्प JSON स्ट्रीमिंग पार्सर का उपयोग करना होगा।

यदि आप json_decode का उपयोग करते समय PHP द्वारा बनाए गए मध्यवर्ती ऑब्जेक्ट ग्राफ़ को बायपास करना चाहते हैं, तो एक स्टीमर पार्सर का उपयोग करना आसान होगा। उदाहरण के लिए, जब आपको एक बड़े JSON दस्तावेज़ मिला है और स्मृति एक समस्या है, तो आप स्ट्रीमिंग पार्सर के साथ दस्तावेज़ को पढ़ते समय XMLWriter साथ XML को आउटपुट कर सकते हैं।

एक उदाहरण 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; } 

JSON2XML श्रोता को श्रोता अंतरफलक लागू करना होगा:

 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() ट्रिगर start_array() और इतने पर। उन विधियों में आप start_element() में उचित विधियों के लिए मानों को प्रतिनिधि start_element() , जैसे start_element() और इसी तरह।

अस्वीकरण: मैं लेखक से संबद्ध नहीं हूं, न ही मैंने पहले उपकरण का इस्तेमाल किया है। मैंने इस पुस्तकालय को चुना क्योंकि एपीआई ने एक घटना आधारित JSON पार्सर का प्रयोग करने के लिए स्पष्ट रूप से सरलता से देखा।