这是我到目前为止的方法。
package com.xmltojson.parse_xml_to_json;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import net.sf.json.JSON;
import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;
import org.apache.commons.io.IOUtils;
public class XMLtoJsonConverter
{
private URL url = null;
private InputStream inputStream = null;
public void getXMLfromJson() {
try {
url = XMLtoJsonConverter.class.getClassLoader().getResource("sampleParse.xml");
inputStream = url.openStream();
String xml = IOUtils.toString(inputStream);
JSON objJson = new XMLSerializer().read(xml);
System.out.println("JSON data : " + objJson);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (inputStream != null) {
inputStream.close();
}
url = null;
} catch (IOException ex) {
}
}
}
public static void main(String[] args) {
new XMLtoJsonConverter().getXMLfromJson();
}
}
下面是我的示例xml文件
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<terms>
<term id="108822" SC="CO" LC="EN" LQ="UK" Type="DES">
<label>soyabeans</label>
<hn>From 1983.</hn>
<uf idref="108843"/>
<bt idref="52990"/>
<cpl idref="52335"/>
<cpl idref="52340"/>
</term>
<term id="108843" SC="CO" LC="EN" LQ="US" Type="NPT">
<label>soybeans</label>
<use idref="108822"/>
</term>
<term id="52990" SC="CO" LC="EN" LQ="NA" Type="DES">
<label>grain legumes</label>
<uf idref="98121"/>
<bt idref="52982"/>
</term>
<term id="52335" SC="ON" LC="EN" LQ="NA" Type="DES">
<label>Glycine max</label>
<com>bhatta (Hindi) (India);
bhatta (Nepali) (India);
bhatta (Nepali) (Nepal);
bhattamash (Nepali) (India);
bhattamash (Nepali) (Nepal);</com>
<uf idref="108125"/>
<uf idref="52333"/>
</term>
<term id="52340" SC="ON" LC="EN" LQ="NA" Type="DES">
<label>Glycine soja</label>
<uf idref="52341"/>
<uf idref="52344"/>
<bt idref="52327"/>
<hpr idref="108822"/>
</term>
</terms>
我想将此xml转换为下面显示的jsonFormat
[
{
"term": "soyabeans",
"termHelp": "uf: soybeans, bt: grain legumes",
}
]
其中term是标签名称,所有其他标签都位于termHElp中。某些术语help元素包含对其他XML标记参考的引用,从那里获取标签值并参考termhelp项目
答案 0 :(得分:0)
我看到您的JSON表示不是输入XML的直接转换,因此您无法使用任何可用的标准开放源代码库(例如Jackson,Gson,Json等)来实现您所要的内容。您必须在3中完成此操作步骤:
1)使用standard Java
将XML反序列化到POJO(例如XMLPOJO类)
2)使用JSON parser
代码将 XMLPOJO转换为JSONPOJO(表示所需JSON格式的类)
3)使用任何np.NaN
库(例如Jackson等)将POJO(JSONPOJO类)序列化到Json。