दिलचस्प पोस्ट
जावा एसएसएल और प्रमाणपत्र कीस्टस्टोर एंड्रॉइड: onInterceptTouchEvent और dispatchTouchEvent के बीच का अंतर? Google मैप्स एंड्रॉइड एपीआई v2 – मानचित्र पर संपर्क का पता लगाएं TypeError: 'dict_keys' ऑब्जेक्ट अनुक्रमणिका का समर्थन नहीं करता है पायथन के साथ सीएसवी में लेखन खाली पंक्तियां जोड़ती है सी ++ संदर्भ से मुक्त या संदर्भ-संवेदनशील है? क्या सरणी की `लम्बाई` की संपत्ति को पढ़ना सचमुच जावास्क्रिप्ट में महंगा है? रूटर लिंक के साथ कांगारु 2 इकाई परीक्षण घटक अपलोड करने से पहले फ़ाइल का आकार प्रतिबंधित करने, jQuery का उपयोग करना वस्तुओं के जावास्क्रिप्ट फ़िल्टर सरणी सी # में अज्ञात प्रकार लौट रहा है एंड्रॉइड में फ़्रेम एनीमेशन द्वारा फ़्रेम में OutOfMemoryError को हो रहा है सूचीकरण पुनरावृत्ति के दौरान जावा.लिटी से किसी तत्व को निकालने के दौरान एक समवर्ती सुधार को प्राप्त करना। क्या सी ++ में टाइपपेफ़ खोजशब्द के लिए एक जावा समतुल्य या पद्धति है? JqGrid ऊपर पेजर (नेविगेशन बार) की स्थिति में असमर्थ

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

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

वेब के समाधान से एकत्रित समाधान "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 पार्सर का प्रयोग करने के लिए स्पष्ट रूप से सरलता से देखा।