xstream实现xml与Object之间的自如转换

  • 因为项目中用到xml交互数据,所以一时间想起了这个工具(XStream),于是琢磨了怎么使用。通过自已的一些编程经验及网络的强大,最终轻松搞定。需要准备如下jar包(xstream-1.4.7.jar、xpp3_min-1.1.4c.jar、xmlpull-1.1.3.1.jar)

    1. 编写对应实体

  • RootBean
    @XStreamAlias("root")
    public class RootBean {
        @XStreamAlias("DocInfo")
        private DocInfoBean docInfo;
        @XStreamAlias("PAGES")
        private List<PageBean> pages;

        //getter和setter
        ...
    }
  • DocInfoBean
public class DocInfoBean {
    @XStreamAlias("APP_CODE")
    private String appCode;
    @XStreamAlias("APP_NAME")
    private String appName;
    @XStreamAlias("BUSI_NO")
    private String busiNo;
    //getter和setter
        ...
}
  • PageBean
@XStreamAlias("PAGE")
public class PageBean {
    @XStreamAlias("DOC_TYPE")
    @XStreamAsAttribute
    private String docType;
    @XStreamAlias("DOC_NAME")
    @XStreamAsAttribute
    private String docName;
    @XStreamAlias("PAGE_URL")
    @XStreamAsAttribute
    private String pageUrl;
    @XStreamAlias("PAGE_NAME")
    @XStreamAsAttribute
    private String pageName;
    @XStreamAlias("UP_USER")
    @XStreamAsAttribute
    private String upUser;
    @XStreamAlias("UP_ORG")
    @XStreamAsAttribute
    private String upOrg;
    @XStreamAlias("UP_TIME")
    @XStreamAsAttribute
    private String upTime;
    //getter和setter
        ...
}

2. xml到对象

private RootBean getRootBean(File xmlFile)  {
        InputStreamReader reader = null;
        try {
            reader = new InputStreamReader(new FileInputStream(busiXmlFile), "UTF-8");
        } catch (Exception e) {
            e.printStackTrace();
        }
        XStream xStream=new XStream(new DomDriver("UTF-8", new XmlFriendlyNameCoder("-_", "_")));
        xStream.alias("root", RootBean.class);
        xStream.autodetectAnnotations(true);
        return (RootBean) xStream.fromXML(reader);
    }

2. 对象到xml

public void testObj2XmlNew(){
        RootBean rootBean = new RootBean();
        DocInfoBean docInfo = new DocInfoBean();
        docInfo.setAppCode("009");
        docInfo.setAppName("测试");
        docInfo.setBusiNo("12345a");

        rootBean.setDocInfo(docInfo);
        List<PageBean> pages = new ArrayList<PageBean>();
        for(int i=0;i<3;i++){
            PageBean page = new PageBean();
            page.setDocName("身份证");
            page.setDocType("010");
            page.setPageName("0000.jpg");
            page.setPageUrl("1111.jpg");
            page.setUpOrg("惠普");
            page.setUpTime("34543312321");
            page.setUpUser("12433124");
            pages.add(page);
        }
        rootBean.setPages(pages);

        //解决了早期bug("_"转化到xml时会变为"__")
        //XStream xStream=new XStream(new DomDriver());
        XStream xStream=new XStream(new DomDriver("UTF-8", new XmlFriendlyNameCoder("-_", "_")));
        xStream.alias("root", RootBean.class);
        xStream.autodetectAnnotations(true);
        String str= xStream.toXML(rootBean);
        System.out.println(str);
    }
  • 运行结果
<root>
  <DocInfo>
    <APP_CODE>009</APP_CODE>
    <APP_NAME>测试</APP_NAME>
    <BUSI_NO>12345a</BUSI_NO>
  </DocInfo>
  <PAGES>
    <PAGE DOC_TYPE="010" DOC_NAME="身份证" PAGE_URL="1111.jpg" PAGE_NAME="0000.jpg" UP_USER="12433124" UP_ORG="惠普" UP_TIME="34543312321"/>
    <PAGE DOC_TYPE="010" DOC_NAME="身份证" PAGE_URL="1111.jpg" PAGE_NAME="0000.jpg" UP_USER="12433124" UP_ORG="惠普" UP_TIME="34543312321"/>
    <PAGE DOC_TYPE="010" DOC_NAME="身份证" PAGE_URL="1111.jpg" PAGE_NAME="0000.jpg" UP_USER="12433124" UP_ORG="惠普" UP_TIME="34543312321"/>
  </PAGES>
</root>
时间: 2024-10-19 10:11:15

xstream实现xml与Object之间的自如转换的相关文章

XML与Object之间的互转

private static final String W3C_XML_SCHEMA_NS_URI = "http://www.w3.org/2001/XMLSchema"; /** 将对象转换成xml @param obj 要转成xml的对象 @param xsdPath 标准的xml文件就传null @return xml格式的字符串*/public static String objToXml(Object obj, String xsdPath) throws JAXBExce

Xstream util xml 与 bean之间互转

package com.demo.util; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.mapper.MapperWrapper; public class XmlUtil { /** * java 转换成xml * @Title: toXml * @Description: TODO * @param obj 对象实例 * @return String xml字符串 */ public st

XStream实现xml和java对象之间的互相转换,同理JSON也可以

首先去官网下载响应JAR包 http://xstream.codehaus.org/index.html 最少需要两个jar包,一个xstream.jar,一个是xmlpull.jar 首先来看下java对象到xml的转换 package xml; class PhoneNumber { private int code; private int number; public int getCode() { return code; } public void setCode(int code)

XStream解析xml和json

XStream是一个在我看来比较好的一个第三方包了.因为它在解析时支持注解.这样很是方便,并且xml跟json这两种格式的文件都能进行解析,XStream本属于java的一个第三方包,甚是好用,若是拿它在android开发环境,也是能正常解析,但有点美中不足,因为android开发环境时,XStream不太支持json转对象,只支持对象转json,其他xml与对象的互转都支持.这样的话双解析就有了那么一点瑕疵之处,不过话说回来,没多少需求的数据交互会用json跟xml切来切去的,当只是json转

xstream读取xml

xStream可以Java和xml相互转换.下面主要说明xstream读取xml文件(和xstream将Java转化成xml差不多).本次学习用到的是xstream1.4.7 项目中使用到的xml文件 <config name="personconfig"> <!-- <add> --> <!-- 使用addImplicitCollection可以不出现 --> <address> <add>abc;abc<

XStream解析XML文本并用反射机制转换为对象

xml文本格式是网络通信中最常用的格式,最近特别研究了一下如何解析xml文本并转换为对象,现在分享一下我最近的学习成果~ 先列一下本例中需要解析的xml文本: Xml代码   <results name="list"> <row pubtime="2016-04-13 16:40:13" author="APP"  id="140" title="什么是公告" content="

xstream 实现xml和对象转换

1.jar包 xstream-1.4.2.jar     xpp3_min-1.1.4c.jar 2.工具类 package com.core.util; import java.lang.reflect.Field; import java.util.Iterator; import java.util.List; import java.util.Map; import com.core.model.Mobile; import com.thoughtworks.xstream.XStrea

一个简单的XML与数组之间的转换

xml是网络使用最多的数据交换格式,所以,不掌握怎么操作它,又有蛋疼的了. php中可以操作xml的类/函数很多,个人认为最简单的是SimpleXMLElement这个类,它的使用就跟其名字一样:简单.当然要想全面自如的操作xml,还得借助其他的类.SimpleXMLElement主要是对xml的进行节点的添加和获取,以及输出整个xml文本内容,但是对于实现一个简单的与数组之间的内容转换,已经足够了. 比如我们现在在接一个sdk,对方接口传过来的是一个简单的xml格式数据,我们需要取到它,并作一

xml和bean之间转化

xml和bean之间转化//bean@XmlRootElement(name = "register")br/>@XmlAccessorType(XmlAccessType.PROPERTY)@XmlType(propOrder = {"name","age" })public class User {private String name;private String age;public String getName() {return