把Object对象转换成XML格式的数据

Posted on 2012-09-25 21:23  关心  阅读(771)  评论(0编辑  收藏  举报

1.在model包里创建StrObject.xsd文件:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://www.w3school.com.cn" xmlns="http://www.w3school.com.cn"
        elementFormDefault="qualified">
        <xs:element name="StrObject">
                <xs:complexType id="property">
                        <xs:sequence>
                                <xs:element name="returncode" type="xs:string" />
                                <xs:element name="queryresult" type="xs:string" />
                                <xs:element name="userid" type="xs:string" />
                                <xs:element name="userlevel" type="xs:string" />
                                <xs:element name="reason" type="xs:string" />
                                <xs:element name="type" type="xs:string" />
                                <xs:element name="format" type="xs:string" />
                        </xs:sequence>
                </xs:complexType>
        </xs:element>
</xs:schema>
2.在model包里创建StrObject.java类:
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;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "returncode",
    "queryresult",
    "userid",
    "userlevel",
    "reason",
    "type",
    "format",
})
@XmlRootElement(name = "property")
public class DomainStatusCheckReturn {
         @XmlElement(required = true)
        private String returncode;
         @XmlElement(required = true)
        private String queryresult;
         @XmlElement(required = true)
        private String userid;
         @XmlElement(required = true)
        private String userlevel;
         @XmlElement(required = true)
        private String reason;
         @XmlElement(required = true)
        private String type;
         @XmlElement(required = true)
        private String format;
        public String getReturncode() {
                return returncode;
        }
        public void setReturncode(String returncode) {
                this.returncode = returncode;
        }
        public String getQueryresult() {
                return queryresult;
        }
        public void setQueryresult(String queryresult) {
                this.queryresult = queryresult;
        }
        public String getUserid() {
                return userid;
        }
        public void setUserid(String userid) {
                this.userid = userid;
        }
        
        public String getUserlevel() {
                return userlevel;
        }
        public void setUserlevel(String userlevel) {
                this.userlevel = userlevel;
        }
        public String getReason() {
                return reason;
        }
        public void setReason(String reason) {
                this.reason = reason;
        }
        public String getType() {
                return type;
        }
        public void setType(String type) {
                this.type = type;
        }
        public String getFormat() {
                return format;
        }
        public void setFormat(String format) {
                this.format = format;
        }
}
3.创建getObjectToXml方法(将对象转换成XML格式的文件)
public static <T> String getObjectToXml(T object) throws IOException
        {
                ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                try
                {
                        JAXBContext context = JAXBContext.newInstance(object.getClass());
                        // 将对象转变为xml Object------XML
                        // 指定对应的xml文件
                        Marshaller marshaller = context.createMarshaller();
                        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, false);//是否格式化生成的xml串
                marshaller.setProperty(Marshaller.JAXB_FRAGMENT, false);//是否省略xml头信息
                        
                        // 将对象转换为对应的XML文件
                        marshaller.marshal(object, byteArrayOutputStream);
                }
                catch (JAXBException e)
                {
                        
                        e.printStackTrace();
                }
                //转化为字符串返回
                String xmlContent = new String(byteArrayOutputStream.toByteArray(), "UTF-8");
                return xmlContent;
        }

4.创建getXmlToObject方法(将XML类型的数据转换成对象)
public static <T> T getXmlToObject(String xmlContent,Class clazz)
        {
                try
                {
                        JAXBContext context = JAXBContext.newInstance(clazz);
                        // xml转换为对象 XML------Object
                        InputStream inputStream;
                        try
                        {
                                inputStream = new ByteArrayInputStream(xmlContent.getBytes("UTF-8"));
                                Unmarshaller um = context.createUnmarshaller();
                                
                                return (T) um.unmarshal(inputStream);
                        }
                        catch (UnsupportedEncodingException e)
                        {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                }
                catch (JAXBException e)
                {
                        
                        e.printStackTrace();
                }
                return null;
        }

5.将获取的数据赋值给StrObject对象
StrObject strReturn=new StrObject();
                strReturn.setReturncode(list.get(0).get属性);
                strReturn.setQueryresult(list.get(0).get属性);
                strReturn.setUserid(list.get(0).get属性);
                strReturn.setUserlevel(list.get(0).get属性);
                strReturn.setReason(list.get(0).get属性);
                strReturn.setType(list.get(0).get属性);
                strReturn.setFormat(list.get(0).get属性);
5. 把XML数据显示在页面
public void ShowXml(){
String xmlDataString = getObjectToXml(strReturn);
                if(StringUtils.isNotBlank(xmlDataString))
                {
                        HttpServletResponse response = ServletActionContext.getResponse();
                        // 设置编码
                        response.setCharacterEncoding("UTF-8");
                        response.setContentType("text/plain;charset=utf-8");
                        response.setHeader("Cache-Control", "no-cache");
                        PrintWriter out = null;
                        try {
                                out = response.getWriter();
                                out.write(xmlDataString);
                                out.flush();
                        } catch (Exception e) {
                                e.printStackTrace();
                        }finally{
                                if(out != null)
                                        out.close();
                        }
                }
  }

Copyright © 2024 关心
Powered by .NET 9.0 on Kubernetes