2014-09-01 99 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