精华内容
下载资源
问答
  • xml 转换 json

    2012-11-14 15:00:49
    非常好用的xml转化成json。封装是否到位。
  • XML转换JSON

    2019-08-12 10:42:52
    * xml格式数据 转换json 格式 */ public class Xml2Json { /** * xml转json * * @param xmlStr * @return * @throws DocumentException */ public static JSONObject xml2Json(String xmlStr) throws ...
    <dependency>
        <groupId>dom4j</groupId>
        <artifactId>dom4j</artifactId>
        <version>1.6.1</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.1.41</version>
    </dependency>

     

    package com.bwcloud.datacleaning.utils;
    
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    
    import java.util.List;
    
    /**
     * Created by
     * lilili
     * 2019/8/9.
     * xml格式数据 转换json 格式
     */
    public class Xml2Json {
        /**
         * xml转json
         *
         * @param xmlStr
         * @return
         * @throws DocumentException
         */
        public static JSONObject xml2Json(String xmlStr) throws DocumentException {
            Document doc = DocumentHelper.parseText(xmlStr);
            JSONObject json = new JSONObject();
            dom4j2Json(doc.getRootElement(), json);
            return json;
        }
    
        /**
         * xml转json
         *
         * @param element
         * @param json
         */
        public static void dom4j2Json(Element element, JSONObject json) {
            List<Element> chdEl = element.elements();
            chdEl.forEach(e -> {
                if (!e.elements().isEmpty()) {
                    JSONObject chdjson = new JSONObject();
                    dom4j2Json(e, chdjson);
                    Object o = json.get(e.getName());
                    if (o != null) {
                        JSONArray jsona = null;
                        if (o instanceof JSONObject) {
                            JSONObject jsono = (JSONObject) o;
                            json.remove(e.getName());
                            jsona = new JSONArray();
                            jsona.add(jsono);
                            jsona.add(chdjson);
                        }
                        if (o instanceof JSONArray) {
                            jsona = (JSONArray) o;
                            jsona.add(chdjson);
                        }
                        json.put(e.getName(), jsona);
                    } else {
                        if (!chdjson.isEmpty()) {
                            json.put(e.getName(), chdjson);
                        }
                    }
                } else {
                    if (!e.getText().isEmpty()) {
                        json.put(e.getName(), e.getText());
                    }
                }
            });
        }
    
    }

     

    展开全文
  • php中xml转换json的方法:首先需要使用SimpleXMLElement将XML内容转化成适当的PHP数据类型;然后将PHP数据提供给【Services_JSON】编码器;最后生成最终的JSON格式的输出即可。php中xml转换json的方法:越来越多的...

    php中xml转换json的方法:首先需要使用SimpleXMLElement将XML内容转化成适当的PHP数据类型;然后将PHP数据提供给【Services_JSON】编码器;最后生成最终的JSON格式的输出即可。

    a7c0ca1f41c672a2615a2c747f5bf474.png

    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。首先,需要使用 SimpleXMLElement 将 XML 内容转化成适当的 PHP 数据类型。然后将 PHP 数据提供给 Services_JSON 编码器,后者再生成最终的 JSON 格式的输出。

    理解 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_JSONpublic static function transformXmlStringToJson($xmlStringContents) {

    $simpleXmlElementObject = simplexml_load_string($xmlStringContents);

    if ($simpleXmlElementObject == null) {

    return(EMPTY_STR);

    }

    $jsonOutput = EMPTY_STR;

    // Let us convert the XML structure into PHP array structure.

    $array1 = xml2json::convertSimpleXmlElementObjectIntoArray($simpleXmlElementObject);

    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))

    return($jsonOutput);

    } // End of function transformXmlStringToJson

    (3)这段长长的代码片段采用了 PHP 开放源码社区(请参阅参考资料)提出的递归技术。它接收输入的 SimpleXMLElement 对象,沿着嵌套的 XML 树递归遍历。将访问过的 XML 元素保存在 PHP 关联数组中。可以通过修改4中定义的常量来改变最大递归深度。

    (3)xml2json.php 中的转换逻辑public static function convertSimpleXmlElementObjectIntoArray($simpleXmlElementObject,

    &$recursionDepth=0) {

    // Keep an eye on how deeply we are involved in recursion.

    if ($recursionDepth > MAX_RECURSION_DEPTH_ALLOWED) {

    // Fatal error. Exit now.

    return(null);

    }

    if ($recursionDepth == 0) {

    if (get_class($simpleXmlElementObject) != SIMPLE_XML_ELEMENT_PHP_CLASS) {

    // If the external caller doesn't call this function initially

    // with a SimpleXMLElement object, return now.

    return(null);

    } else {

    // Store the original SimpleXmlElementObject sent by the caller.

    // We will need it at the very end when we return from here for good.

    $callerProvidedSimpleXmlElementObject = $simpleXmlElementObject;

    }

    } // End of if ($recursionDepth == 0) {

    if (get_class($simpleXmlElementObject) == SIMPLE_XML_ELEMENT_PHP_CLASS) {

    // Get a copy of the simpleXmlElementObject

    $copyOfsimpleXmlElementObject = $simpleXmlElementObject;

    // Get the object variables in the SimpleXmlElement object for us to iterate.

    $simpleXmlElementObject = get_object_vars($simpleXmlElementObject);

    }

    // It needs to be an array of object variables.

    if (is_array($simpleXmlElementObject)) {

    // Is the array size 0? Then, we reached the rare CDATA text if any.

    if (count($simpleXmlElementObject) <= 0) {

    // Let us return the lonely CDATA. It could even be

    // an empty element or just filled with whitespaces.

    return (trim(strval($copyOfsimpleXmlElementObject)));

    }

    // Let us walk through the child elements now.

    foreach($simpleXmlElementObject as $key=>$value) {

    // When this block of code is commented, XML attributes will be

    // added to the result array.

    // Uncomment the following block of code if XML attributes are

    // NOT required to be returned as part of the result array.

    /*

    if($key == SIMPLE_XML_ELEMENT_OBJECT_PROPERTY_FOR_ATTRIBUTES) {

    continue;

    }

    */

    // Let us recursively process the current element we just visited.

    // Increase the recursion depth by one.

    $recursionDepth++;

    $resultArray[$key] =

    xml2json::convertSimpleXmlElementObjectIntoArray($value, $recursionDepth);

    // Decrease the recursion depth by one.

    $recursionDepth--;

    } // End of foreach($simpleXmlElementObject as $key=>$value) {

    if ($recursionDepth == 0) {

    // That is it. We are heading to the exit now.

    // Set the XML root element name as the root [top-level] key of

    // the associative array that we are going to return to the caller of this

    // recursive function.

    $tempArray = $resultArray;

    $resultArray = array();

    $resultArray[$callerProvidedSimpleXmlElementObject->getName()] = $tempArray;

    }

    return ($resultArray);

    } else {

    // We are now looking at either the XML attribute text or

    // the text between the XML tags.

    return (trim(strval($simpleXmlElementObject)));

    } // End of else

    } // End of function convertSimpleXmlElementObjectIntoArray.

    成功遍历 XML 树之后,该函数就用 PHP 关联数组转换和存储了所有的 XML 元素(根元素和所有的孩子元素)。复杂的 XML 文档,得到的 PHP 数组也同样复杂。一旦 PHP 数组构造完成,Services_JSON 编码器就很容易将其转化成 JSON 格式的数据了。要了解其中的递归逻辑,请参阅存档的源文件。

    xml2json 测试驱动程序的实现

    (4)中的代码片段是一个用于执行 xml2json 转换器逻辑的测试驱动程序。

    (4)xml2json_test.php<?php

    require_once("xml2json.php");

    // Filename from where XML contents are to be read.

    $testXmlFile = "";

    // Read the filename from the command line.

    if ($argc <= 1) {

    print("Please provide the XML filename as a command-line argument:\n");

    print("\tphp -f xml2json_test.php test1.xml\n");

    return;

    } else {

    $testXmlFile = $argv[1];

    }

    //Read the XML contents from the input file.

    file_exists($testXmlFile) or die('Could not find file ' . $testXmlFile);

    $xmlStringContents = file_get_contents($testXmlFile);

    $jsonContents = "";

    // Convert it to JSON now.

    // xml2json simply takes a String containing XML contents as input.

    $jsonContents = xml2json::transformXmlStringToJson($xmlStringContents);

    echo("JSON formatted output generated by xml2json:\n\n");

    echo($jsonContents);

    ?>

    可以在命令行中运行该程序,输入以下 XML 文件名作为命令行参数:php -f xml2json_test.php test2.xml

    在命令行中执行的时候,该程序将 XML 内容从文件读入一个字符串变量。然后调用 xml2json 类中的静态函数得到 JSON 格式的结果。除了从命令行中运行该程序之外,还可以修改这个源文件中的逻辑来公开 xml2json 转换器,将其作为可使用简单对象访问协议(SOAP)或者 Representational State Transfer (REST) 访问协议来远程调用的 Web 服务。如果需要,在 PHP 中只要稍加修改就能实现此远程调用。

    (5)展示了本文提供的四个测试 XML 文件中的一个,这些文件用于测试 xml2json 实现。他们的复杂度各不相同。可以将这些文件作为命令行参数传递给测试驱动程序 xml2json_test.php。

    (5)用 test2.xml 测试 xml2json 实现<?xml version="1.0" encoding="UTF-8"?>

    Code Generation in Action

    JackHerrington

    Manning

    PHP Hacks

    JackHerrington

    O'Reilly

    Podcasting Hacks

    JackHerrington

    O'Reilly

    (6)中所示的代码片段是,使用 test2.xml 作为测试驱动程序 xml2json_test.php 的命令行参数时得到的 JSON 格式结果。

    (6)test2.xml 的 JSON 格式化结果{

    "books" : {

    "book" : [ {

    "@attributes" : {

    "id" : "1"

    },

    "title" : "Code Generation in Action",

    "author" : {

    "first" : "Jack", "last" : "Herrington"

    },

    "publisher" : "Manning"

    }, {

    "@attributes" : {

    "id" : "2"

    },

    "title" : "PHP Hacks", "author" : {

    "first" : "Jack", "last" : "Herrington"

    },

    "publisher" : "O'Reilly"

    }, {

    "@attributes" : {

    "id" : "3"

    },

    "title" : "Podcasting Hacks", "author" : {

    "first" : "Jack", "last" : "Herrington"

    },

    "publisher" : "O'Reilly"

    }

    ]}

    }

    请注意, 元素的 XML 属性 id 作为 "@attributes" 对象的属性被保存在 JSON 数据中, 元素作为对象数组被保存在 JSON 数据中。JSON 输出易于在 JavaScript 代码中使用 eval 语句进行处理。

    展开全文
  • xml转换json

    千次阅读 2014-04-04 18:15:09
     * 转换一个xml格式的字符串到json格式   *  * @param filePath   * 是一个有效的xml文件 地址  * @return 成功反回json 格式的字符串;  * @throws Exception   */  @SuppressWarnings("un
     /** 
         * 转换一个xml格式的字符串到json格式 
         *  
         * @param filePath 
         *           是一个有效的xml文件 地址
         * @return 成功反回json 格式的字符串;
         * @throws Exception 
         */  
        @SuppressWarnings("unchecked")  
        public static String xml2JSON(String filePath) throws Exception {  
            JSONObject obj = new JSONObject();  
            try {  
                Element root = XmlUtil.getXMLRoot(filePath);
                obj.put(root.getName(), iterateElement(root));  
                return obj.toString();  
            } catch (Exception e) { 
                throw e;  
            }  
        }  
      
        /** 
         * 一个迭代方法 
         *  
         * @param element 
         *            : org.jdom.Element 
         * @return java.util.Map 实例 
         */  
        private static Map  iterateElement(Element element) {  
            List jiedian = element.getChildren();  
            Element et = null;  
            Map obj = new HashMap();  
            List list = null;  
            for (int i = 0; i < jiedian.size(); i++) {  
                list = new LinkedList();  
                et = (Element) jiedian.get(i);  
                if (et.getTextTrim().equals("")) {  
                    if (et.getChildren().size() == 0)  
                        continue;  
                    if (obj.containsKey(et.getName())) {  
                        list = (List) obj.get(et.getName());  
                    }  
                    list.add(iterateElement(et));  
                    obj.put(et.getName(), list);  
                } else {  
                    if (obj.containsKey(et.getName())) {  
                        list = (List) obj.get(et.getName());  
                    }  
                    list.add(et.getTextTrim());  
                    obj.put(et.getName(), list);  
                }  
            }  
            return obj;  
        }  
    展开全文
  • 字符串json转换为xml xml转换json 原文:字符串json转换为xml xml转换json // To convert an XML node contained in string xml into a JSON string XmlDocument doc = new XmlDocument(); doc....
    原文:字符串json转换为xml xml转换json

    // To convert an XML node contained in string xml into a JSON string    
    XmlDocument doc = new XmlDocument(); 
    doc.LoadXml(xml); 
    string jsonText = JsonConvert.SerializeXmlNode(doc); 
     
    // To convert JSON text contained in string json into an XML node 
    XmlDocument doc = (XmlDocument)JsonConvert.DeserializeXmlNode(json); 
    

      

    XmlNote myXmlNode = JsonConvert.DeserializeXmlNode(myJsonString);
     // or .DeserilizeXmlNode(myJsonString, "root");
     // if myJsonString does not have a root
     string jsonString = JsonConvert.SerializeXmlNode(myXmlNode); 
    

      

                XmlDictionaryReader reader = JsonReaderWriterFactory.CreateJsonReader(Encoding.UTF8.GetBytes(xml), XmlDictionaryReaderQuotas.Max);
                XmlDocument xdoc = new XmlDocument();
                xdoc.Load(reader);
    

      

    posted on 2014-11-19 10:38 NET未来之路 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/lonelyxmas/p/4107661.html

    展开全文
  • 有哪些php中xml转换json的方法发布时间:2020-07-23 10:44:00来源:亿速云阅读:93作者:Leah这篇文章运用简单易懂的例子给大家介绍有哪些php中xml转换json的方法,代码非常详细,感兴趣的小伙伴们可以参考借鉴,...
  • XML转换JSON格式

    2021-01-23 14:39:45
    XML转换JSON格式 很简单的使用!!!!导入一个工具类就可以用了,耐心看完!!!使用一个工具类就可以了!!! 例如:微信的回调信息为一个xml需要获取其中的某个节点的值: <xml> <ToUserName><!...
  • xml转换json数据类,可直接使用xml转换json数据类,可直接使用xml转换json数据类,可直接使用
  • 本文介绍了java将XML文档转换json格式数据的示例,分享给大家,具体如下:功能将xml文档转换json格式数据说明依赖包:1. jdom-2.0.2.jar : xml解析工具包;2. fastjson-1.1.36.jar : 阿里巴巴研发的高性能json...
  • ava中解析xml比较高效的是dom4j,json处理高效的是fastjson,可以结合这两种框架封装一个xmljson的工具类。
  • 引入jar包 <dependency> ...org.json</groupId> <artifactId>json</artifactId> <version>20171018</version> </dependency> <dependency>
  • 1.xml的文件,文件的内容如下: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <info> <id>1&...
  • 我正在尝试将xml中的xml转换json。如果我使用简单的xml和json_encode进行简单的转换,则xml中的任何属性都不会显示。$xml = simplexml_load_file("states.xml");echo json_encode($xml);所以我试图像这样手动解析...
  • 我试图将XML转换json在php。如果我做一个简单的转换使用简单的xml和json_encode没有在xml显示的属性。$xml = simplexml_load_file("states.xml");echo json_encode($xml);所以我试图手动解析这样。foreach($xml-&...
  • blackmagic自动将XML转换JSONJSON转换为XML
  • 这两天处理模块的联调工作,在jsonXML转换中出现了一些奇怪的问题,仔细究来,实为对org.json.*包知之太少。晚上baidu、google一下,找出了问题出现的原因。在模块中,使用了两个方法,xml2Json()和json2Xml(),...
  • 我们可以使用org.json.XML类将XML转换JSON数组,这提供了一个静态方法XML.toJSONObject()来将XML转换JSON数组。语法publicstaticJSONObjecttoJSONObject(java.lang.Stringstring)throwsJSONException在下面的...
  • JSON转换成XML、XML转换JSON

    万次阅读 2016-08-26 17:10:37
    JSON转换成XML、XML转换JSON
  • 使用Json.NET转换xmljson时,如果xml只有单个节点,但json要求是数组形式[],JsonConvert.SerializeXmlNode并不能自动识别示例如下:RecordArray要求是数组格式12转换后的json不能满足要求{"root": {"Record": "",...
  • dict 转换成jsonToday we will learn how to convert XML to JSON and XML to Dict in python. We can use python xmltodict module to read XML file and convert it to Dict or JSON data. We can also stream ...
  • xmlJSON-rs:用于将XML转换JSON的Rust Crate
  • /usr/bin/env python# -*- coding:utf-8 -*-from xml.parsers.expat import ParserCreatetry:import jsonexcept:import simplejson as jsonclass Xml2Json:LIST_TAGS = ['COMMANDS']def __init__(self, data = No.....
  • XML转换JSON的Go软件包 安装 go get -u github.com/basgys/goxml2json 输入 import github.com/basgys/goxml2json 用法 代码示例 package main import ( "fmt" "strings" xj "github....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,417
精华内容 2,566
关键字:

xml转换json