es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Deserialización JAXB a Java POJO

Quiero convertir este XML en un objeto Java, pero no entiendo cómo crear una clase POJO para ello. No puedo cambiar este XML porque proviene de un servidor remoto como una solicitud y necesito toda la información que contiene para poder responder.

<?xml version="1.0" encoding="utf-8"?>
<methodcall>
<methodname>name</methodname>
<params>
<param><value><struct>
<member>
<name>subscriberInput</name>
<value><string>678</string></value>
</member>
<member>
<name>language</name>
<value><string>en</string></value>
</member>
<member>
<name>sessionId</name>
<value><string>16414746570268014</string></value>
</member>
<member><name>msisdn</name><value><string>1234</string></value>
</member>
<member>
<name>newRequest</name>
<value><string>1</string></value>
</member>
<member>
<name>transactionId</name>
<value><string>0122716414746578950</string>
</value>
</member>
</struct></value>

</params></methodcall>
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para convertir este XML en un Objeto Java, es necesario crear una clase POJO con campos que representen los elementos y sus valores en el XML. Puede utilizar JAXB (Java Architecture for XML Binding) para generar automáticamente la clase POJO a partir del esquema XML si está disponible. De lo contrario, puede crear manualmente la clase POJO de la siguiente manera:

    @XmlRootElement(name = "methodCall")
    @XmlAccessorType(XmlAccessType.FIELD)
    public class MethodCall {
        @XmlElement(name = "methodName")
        private String methodName;
        @XmlElementWrapper(name = "params")
        @XmlElement(name = "param")
        private List<param> params;
    
        // getters and setters
    }
    
    @XmlAccessorType(XmlAccessType.FIELD)
    public class Param {
        @XmlElement(name = "value")
        private Value value;
    
        // getter and setter
    }
    
    @XmlAccessorType(XmlAccessType.FIELD)
    public class Value {
        @XmlElement(name = "struct")
        private Struct struct;
    
        // getter and setter
    }
    
    @XmlAccessorType(XmlAccessType.FIELD)
    public class Struct {
        @XmlElementWrapper(name = "member")
        @XmlElement(name = "member")
        private List<member> members;
    
        // getter and setter
    }
    
    @XmlAccessorType(XmlAccessType.FIELD)
    public class Member {
        @XmlElement(name = "name")
        private String name;
        @XmlElement(name = "value")
        private Value value;
    
        // getters and setters
    }
    

    Luego, puede utilizar JAXB para deserializar el XML en el objeto Java de la siguiente manera:

    JAXBContext jaxbContext = JAXBContext.newInstance(MethodCall.class);
    Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
    MethodCall methodCall = (MethodCall) unmarshaller.unmarshal(new StringReader(xmlString));
    

    Donde xmlString es la cadena XML que desea convertir en un objeto Java.

Comments are closed.