Avatar
0
Huu Tuyen Nguyen Beginner
Parse xml soap to object
Hi all, em có 1 soap như này và muốn convert sang object, mn giúp em
<?xml version="1.0" encoding="utf-8"?>rn"
+ "<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">rn"
+ " <soap:Body>rn"
+ " <SendOTTResponse xmlns="http://tempuri.org/">rn"
+ " <SendOTTResult>rn"
+ " <ResCode>0</ResCode>rn"
+ " <ResDesc>Sent</ResDesc>rn"
+ " </SendOTTResult>rn"
+ " </SendOTTResponse>rn"
+ " </soap:Body>rn"
+ "</soap:Envelope>"
+ "</soap:Envelope>

  • Answer
Remain: 5
2 Answers
Avatar
monkey Enlightened
monkey Enlightened
Đây em:
public class SendOTTResult { 
	public int ResCode;
	public String ResDesc;
}

public class SendOTTResponse { 
	public SendOTTResult SendOTTResult;
}
  • -1
  • Reply
ko phải là tạo object mà là parse sang object cơ mà.
 –  Huu Tuyen Nguyen 1635218764000
Avatar
monkey Enlightened
monkey Enlightened
Đây em:

package com.example.stackoverflow;

import java.io.StringReader;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

import lombok.Data;

public class JAXBExample {

    public static void main(String[] args) throws Exception {
        String xml = <span>"&lt;?xml version=<span>"</span>1.0<span>"</span> encoding=<span>"</span>utf-8<span>"</span>?&gt;<span>n</span>"</span>
                     + <span>"&lt;soap:Envelope xmlns:soap=<span>"</span>http://www.w3.org/2003/05/soap-envelope<span>"</span> xmlns:xsi=<span>"</span>http://www.w3.org/2001/XMLSchema-instance<span>"</span> xmlns:xsd=<span>"</span>http://www.w3.org/2001/XMLSchema<span>"</span>&gt;<span>n</span>"</span>
                     + <span>" &lt;soap:Body&gt;<span>n</span>"</span>
                     + <span>" &lt;SendOTTResponse xmlns=<span>"</span>http://tempuri.org/<span>"</span>&gt;<span>n</span>"</span>
                     + <span>" &lt;SendOTTResult&gt;<span>n</span>"</span>
                     + <span>" &lt;ResCode&gt;0&lt;/ResCode&gt;<span>n</span>"</span>
                     + <span>" &lt;ResDesc&gt;Sent&lt;/ResDesc&gt;<span>n</span>"</span>
                     + <span>" &lt;/SendOTTResult&gt;<span>n</span>"</span>
                     + <span>" &lt;/SendOTTResponse&gt;<span>n</span>"</span>
                     + <span>" &lt;/soap:Body&gt;<span>n</span>"</span>
                     + <span>"&lt;/soap:Envelope&gt;"</span>;

        JAXBContext jaxbContext = JAXBContext.newInstance(
            Envelope.class,
            Body.class,
            SendOTTResponse.class,
            SendOTTResult.class
        );
        Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
        System.out.println(unmarshaller.unmarshal(new StringReader(xml)));
    }

    @Data
    public static class SendOTTResult {
        @XmlElement(name = "ResCode", namespace="http://tempuri.org/")
        public int ResCode;
        @XmlElement(name = "ResDesc", namespace="http://tempuri.org/")
        public String ResDesc;
    }

    @Data
    public static class SendOTTResponse {
        @XmlElement(name = "SendOTTResult", namespace="http://tempuri.org/")
        public SendOTTResult SendOTTResult;
    }

    @Data
    public static class Body {
        @XmlElement(name = "SendOTTResponse", namespace="http://tempuri.org/")
        public SendOTTResponse SendOTTResponse;
    }

    @Data
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlRootElement(name="Envelope", namespace="http://www.w3.org/2003/05/soap-envelope")
    public static class Envelope {
        @XmlElement(name = "Body", namespace="http://www.w3.org/2003/05/soap-envelope")
        public Body Body;
    }
}
  • 0
  • Reply