Преобразование XML в JSON отсутствует элемент

1

Я новичок в программировании 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) );
    }                   
}
}

Пожалуйста, предложите мне добавить код

  1. Чтобы удалить тег "@xmlns: ns0": "urn: xml: json",
  2. Чтобы добавить элемент ID в код JAVA.

С уважением

  • 0
    Исправлен ли формат XML? Если так, я отправлю вам ответ.
  • 0
    @Robin Робин посмотри здесь и здесь
Теги:

1 ответ

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
    Уважаемый Филипп, Спасибо за ответ. Я пытаюсь реализовать вашу программу. Поиск всех пакетов, необходимых для этого, пока я не выполню.
  • 0
    Вам нужны пакеты jackson-mapper-asl, jackson-core-asl и jackson-dataformat-xm

Ещё вопросы

Сообщество Overcoder
Наверх
Меню