java将xml转换为json的另一种方法。需要用到的类库:
json-lib.sourceforge.net/
请自己注意添加以上类库的依赖包。
java代码:
package com.mibridge.util;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.InputStream;
import net.sf.json.JSON;
import net.sf.json.xml.XMLSerializer;
public class ConvertXMLtoJSON {
public static void main(String[] args) throws Exception {
String xml = getXMLString(“soap-origin.xml”);
System.out.println(xml);
XMLSerializer xmlSerializer = new XMLSerializer();
JSON json = xmlSerializer.read(xml);
System.out.println(json.toString(2));
}
private static String getXMLString(String filePath) {
StringBuffer sb = new StringBuffer();
BufferedReader br = null;
String line;
try {
br = new BufferedReader(new FileReader(filePath));
while (true) {
line = br.readLine();
if (line == null) {
break;
}
sb.append(line + “\n”);
}
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}
}
xml文档soap-origin.xml:
<?xml version=“1.0” encoding=“utf-8”?>
<soapenv:Envelope xmlns:soapenv=“.w3.org/2003/05/soap-envelope”>
<soapenv:Body>
<ns:Response xmlns:ns=“demo.test.classes.com”>
<ns:return>
<ns:person>
<ns:personName></ns:personName>
<ns:personAge></ns:personAge>
<ns:personAddress>
<ns:addressType>家庭住址</ns:addressType>
<ns:addressLine1>中国深圳</ns:addressLine1>
</ns:personAddress>
<ns:personAddress>
<ns:addressType>公司地址</ns:addressType>
<ns:addressLine1>荔香公园</ns:addressLine1>
</ns:personAddress>
</ns:person>
</ns:return>
</ns:Response>
</soapenv:Body>
</soapenv:Envelope>
输出的json:
{
“@xmlns:soapenv”: “.org/2003/05/soap-envelope”,
“soapenv:Body”: {“ns:Response”: {
“@xmlns:ns”: “demo.test.classes.”,
“ns:return”: {“ns:person”: {
“ns:personName”: null,
“ns:personAge”: null,
“ns:personAddress”: [
{
“ns:addressType”: “家庭住址”,
“ns:addressLine1”: “中国深圳”
},
{
“ns:addressType”: “公司地址”,
“ns:addressLine1”: “荔香公园”
}
]
}}
}}
}