xstream如何将java对象转化成有cdata的xml

xstream如何将java对象转化成有cdata的xml,第1张

实体类要加注解

实体类要加注解

@XStreamAlias("msg")

public class Msg implements Serializable {

    private static final long serialVersionUID = 3196422897798539811L

    

    @XStreamAsAttribute

    private String toUid

    @XStreamAsAttribute

    private String fromUid

    @XStreamAsAttribute

    private String flag

    @XStreamAsAttribute

    private String time

    @XStreamAlias("content")

    private String content

    @XStreamAlias("user")

    private String user

    //省略geter、seter

}

然后写个工具类

import com.thoughtworks.xstream.XStream

import com.thoughtworks.xstream.io.xml.DomDriver

public class SerializeXmlUtil {

    /**

     * java对象转化成xml字符串

     * @param obj  java对象实例

     * @return String   xml字符串

     */

    public static String serializeToXml(Object obj) {

        //XStream xstream = new XStream()

        //直接用jaxp dom来解释

        //XStream xstream=new XStream(new DomDriver())

        //指定编码解析器,直接用jaxp dom来解释

        XStream xstream=new XStream(new DomDriver("utf-8"))

        //如果没有这句,xml中的根元素会是<包.类名>

        //或者说:注解根本就没生效,所以的元素名就是类的属性

        xstream.processAnnotations(obj.getClass())

        StringBuffer xmlstrbuf = new StringBuffer()

        xmlstrbuf.append("<?xml version=\"1.0\"?>")

        xmlstrbuf.append("\r\n")

        xmlstrbuf.append(xstream.toXML(obj))

        return xmlstrbuf.toString()

    }

    

    /**

     * 将传入xml字符串转化为java对象

     * @param xmlstr

     * @param cls   xml对应的class类

     * @return T    xml对应的class类的实例对象

     * 调用的方法实例:PersonBean person=XmlUtil.toBean(xmlStr, PersonBean.class)

     */

    public static <T> T deSerizalizeFromXml(String xmlstr, Class<T> cls) throws Exception {

        //注意:不是new Xstream()否则报错:java.lang.NoClassDefFoundError:

        //org/xmlpull/v1/XmlPullParserFactory

        XStream xstream = new XStream(new DomDriver())

        xstream.processAnnotations(cls)

        T obj = (T) xstream.fromXML(xmlstr)

        return obj

    }

}

1、创建pojo类(在一对多关联关系中,应该在“一”这端的pojo有一个“多”这一端的引用,而多这端有一这端的集合引用(即聚合关联)

2、创建pojo对应的数据库表,并插入数据

3、在ibatis配置文件中配置pojo类(配置方法:SqlMappingConfig.xml文件中添加如<typeAlias alias="Key" type="com.longsky.ibatis.lock.model.Key"/>配置,下文会看到。)

4、在pojo对应的xml配置文件中配置resultMap,比如在Lock.xml文件中添加

<resultMap id="LockResult" class="Lock">

<result property="id" column="id"/><result property="lockName" column="lockName"/>

<result property="keys" column="id" select="getKeysByLockId"/>

</resultMap>

5、在需要级联查询的查询语句中使用resultMap,比如

<select id="selectAllLocks" resultMap="LockResult">

<![CDATA[

select id,lockName from lock

]]>

</select>

一个简单的示例,我们给Person类定义age和name两个属性,然后在spring配置文件中通过属性注入值。

Person类的定义如下:

package

cn.outofmemory.spring

public

class

Person

{

private

String

name

private

int

age

public

String

getName()。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11893750.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存