XStream将java转化成xml的简单使用

XStream可以用来将java实体转化成xml形式的字符串, 也可以将xml文档的字符串读取成java实体.

jar包依赖地址

<dependency>
    <groupId>com.thoughtworks.xstream</groupId>
    <artifactId>xstream</artifactId>
    <version>${xstream-version}</version>
</dependency>

使用方法实例

这是我在网上看的一个教程文档,使用的测试类

package com.hero.test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import com.thoughtworks.xstream.XStream;

public class TestXstream {

    public static void main(String[] args) throws IOException{
        Person  person = buildPerson();
        XStream xStream = new XStream();
    //  output(1,xStream,person);
        // 设置类别名
        xStream.alias("Person", Person.class);
        xStream.alias("Address", Address.class);
        xStream.alias("Profile", Profile.class);
        output(2,xStream,person);
//      // 设置类成员变量的别名
//      xStream.aliasField("NAME", Person.class, "name");
//      xStream.aliasField("JOB", Profile.class, "job");
//      output(3,xStream,person);
//      // 设置类的成员为xml节点的属性
//      xStream.useAttributeFor(Address.class, "add");
//      output(4,xStream,person);
//      // 设置类的成员为xml节点的属性的别名
//      xStream.aliasAttribute(Address.class, "add", "ADD");
//      output(5,xStream,person);
        // xml转java
        
//      String xml = buildXml();
//      System.out.println(xStream.fromXML(xml).toString());
        
    
    }
    
    public static void output(int i,XStream xStream, Person obj) throws IOException{
        System.out.println("****************第"+i+"次输出******************");
        File file = new File("/Users/admin/Documents/temp/xml/"+obj.getName()+".xml");
        FileOutputStream os = new FileOutputStream(file);
        String xml  = xStream.toXML(obj);
        System.out.println(xml);
        byte[] bt = xml.getBytes();
        os.write(bt);
        os.flush();
        os.close();
    }
    
    public static Person buildPerson(){
        Address add1 = new Address("人民路","200001");
        Address add2 = new Address("达夫路","200002");
        List<Address> addlist = new ArrayList<Address>();
        addlist.add(add1);
        addlist.add(add2);
        
        Profile profile = new Profile("工程师","021-0001","这是备注");
        Person person = new Person("mary","23",profile,addlist);
        return person;
    }
    
    public static String buildXml(){
        String xml = "<Person>"+
  "<name>mary</name>"+
  "<age>23</age>"+
  "<profile>"+
    "<job>工程师</job>"+
    "<tel>021-0001</tel>"+
    "<remark>这是备注</remark>"+
  "</profile>"+
  "<addlist>"+
    "<Address>"+
      "<add>人民路</add>"+
      "<zipcode>200001</zipcode>"+
    "</Address>"+
    "<Address>"+
      "<add>达夫路</add>"+
      "<zipcode>200002</zipcode>"+
    "</Address>"+
  "</addlist>"+
"</Person>";
        
        return xml;
    }
    
}

转载于:https://www.cnblogs.com/cbiwei/p/6963072.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值