php中xml转换json的方法:首先需要使用SimpleXMLElement将XML内容转化成适当的PHP数据类型;然后将PHP数据提供给【Services_JSON】编码器;最后生成最终的JSON格式的输出即可。
php中xml转换json的方法:
越来越多的应用程序需要将 XML 转换成 JSON。已经出现了一些基于 Web 的服务来执行这类转换。IBM T.J. Watson Research Center 开发了一种专门的方法,使用 PHP 进行这种转换。该方法以 XML 字符串数据为输入并将其转换成 JSON 格式的数据输出。这种 PHP 的解决方案有以下几方面的优点:
-
可以独立模式运行,在命令行下执行。
-
可以包含到已有服务器端代码工件中。
-
很容易承载为 Web 上的 Web 服务。
XML 到 JSON 的转换需要用到两种 PHP 核心特性:
-
SimpleXMLElement
-
Services_JSON
只需要这两种 PHP 核心特性,就可以将任何 XML 数据转化成 JSON。首先,需要使用 SimpleXMLE来源gaodaima#com搞(代@码网lement 将 XML 内容转化成适当的 PHP 数据类型。然后将 PHP 数据提供给 Services_JSON 编码器,后者再生成最终的 JSON 格式的输出。
相关学习推荐:PHP编程从入门到精通
理解 PHP 代码
这个 xml2json 实现包括三部分:
-
xml2json.php —— 这个 PHP 类包括两个静态函数
-
xml2json_test.php —— 执行xml2json 转换函数的测试驱动程序
-
test1.xml、test2.xml、test3.xml、test4.xml —— 复杂程度不同的 XML 文件
为了简化起见,本文省略了代码中的详细注释。不过后面附的源文件中包含完整的注释。要了解完全的程序逻辑细节,请参阅所附的源文件(请参阅下载)。
(1)定义了一些要用到的常量。第一行代码导入了 Services_JSON 实现。
(1)定义 xml2json.php
中的常量
require_once 'json/JSON.php'; // Internal program-specific Debug option. define ("DEBUG", false); // Maximum Recursion Depth that we can allow. define ("MAX_RECURSION_DEPTH_ALLOWED", 25); // An empty string define ("EMPTY_STR", ""); // SimpleXMLElement object property name for attributes define ("SIMPLE_XML_ELEMENT_OBJECT_PROPERTY_FOR_ATTRIBUTES", "@attributes"); // SimpleXMLElement object name. define ("SIMPLE_XML_ELEMENT_PHP_CLASS", "SimpleXMLElement");
(2)中的代码片段是 xml2json 转换器的入口函数。它接收 XML 数据作为输入,将 XML 字符串转化成 SimpleXMLElement 对象,然后发送给该类的另一个(递归)函数作为输入。这个函数将 XML 元素转化成 PHP 关联数组。这个数组再被传给 Services_JSON 编码器作为其输入,该编码器给出 JSON 格式的输出。
(2)使用 xml2json.php
中的 Services_JSON
public static function transformXmlStringToJson($xmlStringContents) { $simpleXmlElementObject = simplexml_load_string($xmlStringContents); <br> if ($simpleXmlElementObject == null) { return(EMPTY_STR); } <br> $jsonOutput = EMPTY_STR; <br> // Let us convert the XML structure into PHP array structure. $array1 = xml2json::convertSimpleXmlElementObjectIntoArray($simpleXmlElementObject); <br> if (($array1 != null) && (sizeof($array1) > 0)) { // Create a new instance of Services_JSON $json = new Services_JSON(); // Let us now convert it to JSON formatted data. $jsonOutput = $json->encode($array1); } // End of if (($array1 != null) && (sizeof($array1) > 0)) <br> return($jsonOutput); } // End of function transformXmlStringToJson