使用Eclipse将.xml文件转换为java中的.json文件?

时间:2018-07-10 04:52:52

标签: java json xml

这是我到目前为止的方法。

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项目

1 个答案:

答案 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。