Я новичок в программировании JAVA и пытаюсь преобразовать XML в JAVA, используя нижеприведенный сниппет.
Входной файл:
<?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) );
}
}
}
Пожалуйста, предложите мне добавить код
С уважением
Вы можете отобразить 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();