24

我有一个如下所示的 XML 字符串:

<s:Envelope 
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><Response 
xmlns="http://tempuri.org/"><UserResult><Users xmlns=""><User>
<Message>Success</Message>
<UserId>213213213</UserId>
<FullName>Abc</FullName>
<Roles>
<Role>
<RoleId>23232333</RoleId>
<RoleName>Salesperson</RoleName>
</Role>
</Roles>
</User>
</Users>
</UserResult></Response>
</s:Body>
</s:Envelope>

是否可以将 XML 转换为 JSON?

4

5 回答 5

75

你也可以试试这个方法。我自己尝试过并测试过。

第 1 步:请下载java-json.jar

第 2 步:将/libs其添加到项目的文件夹,然后添加到构建路径。

第三步:然后按如下方式使用

  • 进口寻找

    import org.json.JSONException;
    import org.json.JSONObject;
    import org.json.XML;
    
  • 示例字符串

    String sampleXml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
        + "<mobilegate>"    
    +"<timestamp>232423423423</timestamp>"                          
    + "<txn>" + "Transaction" + "</txn>" 
    + "<amt>" + 0 + "</amt>" 
    + "</mobilegate>"; 
    
  • json字符串

    JSONObject jsonObj = null;
    try {
        jsonObj = XML.toJSONObject(sampleXml);
    } catch (JSONException e) {
        Log.e("JSON exception", e.getMessage());
        e.printStackTrace();
    } 
    
    Log.d("XML", sampleXml);
    
    Log.d("JSON", jsonObj.toString());
    

输出:

XML:

<?xml version="1.0" encoding="utf-8"?><mobilegate><timestamp>232423423423</timestamp><txn>Transaction</txn><amt>0</amt></mobilegate>

JSON:

{"mobilegate":{"timestamp":232423423423,"amt":0,"txn":"Transaction"}}

于 2013-08-20T15:32:51.050 回答
8

我刚刚为 Android Studio 发布了一个“XML to JSON”库。易于与 gradle 集成,使用简单,可配置。

XmlToJson在 GitHub 上可用:

https://github.com/smart-fun/XmlToJson

请享用!

于 2016-11-10T21:51:02.113 回答
2

我建议你使用json-lib一个添加JSON support to any Java program. json-lib 可以接受 XML 并将其转换为 JSON 对象。

你可以在这里得到 json-lib

例如。

String xml = "your xml string";                
XMLSerializer xmlSerializer = new XMLSerializer(); 
JSON json = xmlSerializer.read( xml );
于 2013-08-20T14:23:42.340 回答
1

Underscore-java有静态方法U.xmlToJson(xml)活生生的例子

import com.github.underscore.U;

public class Main {
    public static void main(String args[]) {
        String xml = "<s:Envelope \n"
                    + "xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><Response \n"
                    + "xmlns=\"http://tempuri.org/\"><UserResult><Users xmlns=\"\"><User>\n"
                    + "<Message>Success</Message>\n"
                    + "<UserId>213213213</UserId>\n"
                    + "<FullName>Abc</FullName>\n"
                    + "<Roles>\n"
                    + "<Role>\n"
                    + "<RoleId>23232333</RoleId>\n"
                    + "<RoleName>Salesperson</RoleName>\n"
                    + "</Role>\n"
                    + "</Roles>\n"
                    + "</User>\n"
                    + "</Users>\n"
                    + "</UserResult></Response>\n"
                    + "</s:Body>\n"
                    + "</s:Envelope>";
        System.out.println(U.xmlToJson(xml));
    }
}

输出:

{
  "s:Envelope": {
    "-xmlns:s": "http://schemas.xmlsoap.org/soap/envelope/",
    "s:Body": {
      "Response": {
        "-xmlns": "http://tempuri.org/",
        "UserResult": {
          "Users": {
            "-xmlns": "",
            "User": {
              "Message": "Success",
              "UserId": "213213213",
              "FullName": "Abc",
              "Roles": {
                "Role": {
                  "RoleId": "23232333",
                  "RoleName": "Salesperson"
                }
              }
            }
          }
        }
      }
    }
  },
  "#omit-xml-declaration": "yes"
}
于 2018-10-05T08:03:19.303 回答
0

您可以将xml转换为jackson对象,然后可以使用jackson json。

我试图将 XmlPull 支持添加到 jackson xml。在这里找到分叉的项目:

https://github.com/finvu/jackson-dataformat-xml

目前,仅支持 2.9.6 版本。(克隆分支jackson-dataformat-xml-2.9.6-XmlPull)

抱歉,由于时间限制,我无法提供详细的文档。如果您了解 git 和 maven 来拉取特定分支并构建 jar,那么它应该相对容易。

Jackson xml 文档可以在 jackson xml git 主页上找到:

https://github.com/finvu/jackson-dataformat-xml/tree/jackson-dataformat-xml-2.9.6-XmlPull

于 2019-02-11T06:28:05.953 回答