(1)RequestEntity.java:
package spdb.xml2bean;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlRootElement(name = "Envelope")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"header",
"body"
})
//@XmlRootElement(name = "soapenv:Envelope")
public class RequestEntity {
@XmlAttribute(name="xmlns:soapenv")
protected String soapenv="http://schemas.xmlsoap.org/soap/envelope/";
@XmlAttribute(name="xmlns:eapp")
protected String eapp="http://wx.gmw9.com";
@XmlAttribute(name="xmlns:bus")
protected String bus=null;
@XmlElement(required = true,name="soapenv:Header")
protected spdb.xml2bean.RequestHeader header;
@XmlElement(required = true,name="soapenv:Body")
protected spdb.xml2bean.RequestBody body;
//get set方法省略
public spdb.xml2bean.RequestHeader getHeader() {
return this.header;
}
public void setHeader(spdb.xml2bean.RequestHeader header) {
this.header = header;
}
public spdb.xml2bean.RequestBody getBody() {
return this.body;
}
public void setBody(spdb.xml2bean.RequestBody body) {
this.body = body;
}
}
(2)
RequestHeader.java:
package spdb.xml2bean;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "soapenv:Header")
public class RequestHeader
{
}
(3)
RequestBody.java
package spdb.xml2bean;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "soapenv:Body")
public class RequestBody {
@XmlElement(required = true,name="eapp:aaaaaa")
public BodyContent aaaaaa;
public BodyContent getAaaaaa() {
return this.aaaaaa;
}
public void setAaaaaa(BodyContent aaaaaa) {
this.aaaaaa = aaaaaa;
}
}
(4)
JaxbXmlUtil.java
package spdb.xml2bean;
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
/**
Jaxb工具类 xml和java类相互转换
@author sunjianbo
@date 2017年4月17日
*/
public class JaxbXmlUtil {
public static final String DEFAULT_ENCODING = "UTF-8";
/**
/**
pojo转换成xml
@param obj 待转化的对象
@param encoding 编码
@return xml格式字符串
@throws Exception JAXBException
*/
public static String convertToXml(Object obj, String encoding) throws Exception {
String result = null;
JAXBContext context = JAXBContext.newInstance(obj.getClass());
Marshaller marshaller = context.createMarshaller();
// 指定是否使用换行和缩排对已编组 XML 数据进行格式化的属性名称。
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);
StringWriter writer = new StringWriter();
marshaller.marshal(obj, writer);
result = writer.toString();
return result;
}
/**
T obj = null;
try
{
JAXBContext context = JAXBContext.newInstance(t);
Unmarshaller unmarshaller = context.createUnmarshaller();
obj = (T) unmarshaller.unmarshal(new StringReader(xml));
return obj;
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return obj;
}
@SuppressWarnings("unchecked")
public static <T> T converyToJavaBean(String xml, Class<T> c) {
T t = null;
try {
JAXBContext context = JAXBContext.newInstance(c);
Unmarshaller unmarshaller = context.createUnmarshaller();
t = (T) unmarshaller.unmarshal(new StringReader(xml));
} catch (Exception e) {
e.printStackTrace();
}
return t;
}
}
(6)
BodyContent.java
package spdb.xml2bean;
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 javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"compNo",
"agentCode",
"eAppID"
})
@XmlRootElement(name = "eapp:aaaaaa")
public class BodyContent {
@XmlElement(required = true,name="eapp:compNo")
protected String compNo;
@XmlElement(required = true,name="eapp:agentCode")
protected String agentCode;
@XmlElement(required = true,name="eapp:eAppId")
protected String eAppID;
//get set方法省略
public String getCompNo() {
return this.compNo;
}
public void setCompNo(String compNo) {
this.compNo = compNo;
}
public String getAgentCode() {
return this.agentCode;
}
public void setAgentCode(String agentCode) {
this.agentCode = agentCode;
}
public String getEAppID() {
return this.eAppID;
}
public void setEAppID(String eAppID) {
this.eAppID = eAppID;
}
public String toString()
{
String result = "";
result += compNo +agentCode +eAppID;
System.out.println(result);
return result;
}
}
(7)
Test.java
package spdb.xml2bean;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
public class Test {
public static void main(String[] args) throws Exception {
objectToXml();
xmlToObjetct();
}
public static void objectToXml() throws Exception{
RequestEntity myRequestEntity = new RequestEntity();
BodyContent myBodyContent = new BodyContent();
myBodyContent.setAgentCode("testa1");
myBodyContent.setCompNo("testa2");
myBodyContent.setEAppID("testa3");
RequestBody myRequestBody = new RequestBody();
RequestHeader myRequestHeader = new RequestHeader();
myRequestBody.setAaaaaa(myBodyContent);
myRequestEntity.setBody(myRequestBody);
myRequestEntity.setHeader(myRequestHeader);
String xml = JaxbXmlUtil.convertToXml(myRequestEntity);
System.out.println(xml);
}
public static void xmlToObjetct()throws Exception{
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" +
"<Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:eapp=\"http://wx.gmw9.com\">" +
" <soapenv:Header/>" +
" <soapenv:Body>" +
" <eapp:aaaaaa>" +
" <eapp:compNo>testa1</eapp:compNo>" +
" <eapp:agentCode>testa2</eapp:agentCode>" +
" <eapp:eAppId>testa3</eapp:eAppId>" +
" </eapp:aaaaaa>" +
" </soapenv:Body>" +
"</Envelope>";
RequestEntity myRequestEntity= JaxbXmlUtil.convertToJavaBean(xml, RequestEntity.class);
RequestEntity re = JaxbXmlUtil.convertToJavaBean(xml, RequestEntity.class);
String xmlout = JaxbXmlUtil.convertToXml(re);
System.out.println(xmlout);
}
}
(8) console output:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:eapp="http://wx.gmw9.com">
soapenv:Header/
soapenv:Body
eapp:aaaaaa
eapp:compNotesta2</eapp:compNo>
eapp:agentCodetesta1</eapp:agentCode>
eapp:eAppIdtesta3</eapp:eAppId>
</eapp:aaaaaa>
</soapenv:Body>
</Envelope>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:eapp="http://wx.gmw9.com"/>
建议改进一下排版,支持 markdown 语法
– dudu 4年前