有没有办法在PHP中将json转换为xml?

42 php xml json

有没有办法转换jsonxmlPHP?我知道xml到json是非常有可能的.

Sam*_*war 26

如果您愿意使用PEAR中的XML Serializer,您可以通过两个简单的步骤将JSON转换为PHP对象,然后将PHP对象转换为XML:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)


Tom*_*lak 11

这取决于您希望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>';
Run Code Online (Sandbox Code Playgroud)

(未经测试的代码 - 但你明白了)


Mar*_*tos 8

json_decode它打开JSON 并遍历它以生成你想要的任何XML.

如果您想知道,JSON和XML之间没有规范映射,因此您必须根据应用程序的需要自行编写XML生成代码.


小智 5

我将前两个建议合并到:

/**
 * 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;
    }
}
Run Code Online (Sandbox Code Playgroud)