2014-09-01 96 views
1

我是JAVA編程中的新手,並嘗試使用下面的snipet將XML轉換爲JAVA。XML到JSON轉換缺少元素

輸入文件:

<?xml version="1.0" encoding="UTF-8"?> 
-<ns0:MT_ECCJDBC xmlns:ns0="urn:xml:json"> 
-<REQUEST> 
<ID>46565665</ID> 
</REQUEST> 
</ns0:MT_ECCJDBC> 

輸出:

{ 
    "@xmlns:ns0": "urn:xml:json", 
    "REQUEST": ["46565665"] 
} 

在JSON預期輸出是

{ 
    "REQUEST": 

{ 
    " ID " : ["46565665"] 
} 

} 

下面是我的Java代碼:

public class ConversionXMLtoJSON { 

    public static void main(String[] args) throws Exception { 

        { 
     InputStream is = ConversionXMLtoJSON.class.getResourceAsStream("instance.xml"); 
     String xml = IOUtils.toString(is); 
     XMLSerializer xmlSerializer = new XMLSerializer(); 
     JSON json = xmlSerializer.read(xml); 
     System.out.println(json.toString(2)); 
    }     
} 
} 

請建議我在代碼

  1. 添加要刪除標記 「@xmlns:NS0」: 「甕:XML:JSON」,
  2. 要在Java代碼中添加了ID的元素。

問候

+0

是XML的格式固定的嗎?如果是的話,我會提交給你一個答案。 – 2014-09-01 07:14:42

+0

@Robin看看[這裏](http://heshans.blogspot.in/2014/01/java-library-to-convert-xml-to-json.html)和[here](http:// www .javacodegeeks.com/2014/07 /轉換-json-to-xml-to-java-objects-using-xstream.html) – 2014-09-01 07:19:21

回答

0

您可以映射XML轉換成Java對象,然後使用JSON生成器生成JSON。我喜歡使用jackson-mapper-asl,jackson-core-asl和jackson-dataformat-xml。

到XML綁定到Java:

public class XmlRequest { 

    @JacksonXmlElementWrapper(localName="REQUEST") 
    private REQUEST request; 


    public static class REQUEST { 
     @JacksonXmlProperty(localName="ID") 
     protected int ID; 

     public int getID() { 
      return ID; 
     } 

     public void setID(int iD) { 
      ID = iD; 
     } 

    } 

    public REQUEST getRequest() { 
     return request; 
    } 

    public void setRequest(REQUEST request) { 
     this.request = request; 
    } 
} 

來生成JSON:

XmlMapper mapper = new XmlMapper(); 
XmlRequest request = (XmlRequest) mapper.readValue(App.class.getResourceAsStream("/NewFile.xml"), XmlRequest.class); 

StringWriter sw = new StringWriter(); 

JsonGenerator jsongen = new JsonFactory().createJsonGenerator(System.out); 

jsongen.writeStartObject(); 
jsongen.writeFieldName("REQUEST"); 
jsongen.writeStartObject();  
jsongen.writeFieldName("ID"); 
jsongen.writeStartArray(); 
jsongen.writeNumber(request.getRequest().getID()); 
jsongen.writeEndArray(); 
jsongen.writeEndObject(); 
jsongen.writeEndObject(); 
jsongen.close(); 
+0

親愛的菲利普,感謝您的迴應。我正在嘗試執行您的程序。搜索所需的所有包,直到我執行。 – Robin 2014-09-01 08:44:50

+0

您需要軟件包jackson-mapper-asl,jackson-core-asl和jackson-dataformat-xm – 2014-09-01 16:37:43