apache commons betwixt

一、引入Maven依赖

<dependency>
    <groupId>commons-betwixt</groupId>
    <artifactId>commons-betwixt</artifactId>
    <version>0.8</version>
</dependency>

二、常用API说明

以下使用到一些BO:

Person.java

public class Person {
    private String username;
    private int age;
    private float stature;//身高
    private boolean sex;//性别
    private List list = new ArrayList();
    private String[] friendsNames;
    private Map<String, String> maps = new HashMap<String, String>();
    private Address address;

    public Person() {

    }
    public Person(String username) {
        this.username = username;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public float getStature() {
        return stature;
    }

    public void setStature(float stature) {
        this.stature = stature;
    }

    public boolean isSex() {
        return sex;
    }

    public void setSex(boolean sex) {
        this.sex = sex;
    }

    @SuppressWarnings("unchecked")
    public List getList() {
        return list;
    }

    @SuppressWarnings("unchecked")
    public void setList(List list) {
        this.list = list;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    public Map<String, String> getMaps() {
        return maps;
    }

    public void setMaps(Map<String, String> maps) {
        this.maps = maps;
    }

    public String[] getFriendsNames() {
        return friendsNames;
    }

    public void setFriendsNames(String[] friendsNames) {
        this.friendsNames = friendsNames;
    }

    @Override
    public String toString() {
        return "Person{" +
                "username='" + username + '\'' +
                ", age=" + age +
                ", address=" + address +
                '}';
    }
}

Address.java

public class Address {
    private String email;
    private List<String> telephone;
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public List<String> getTelephone() {
        return telephone;
    }
    public void setTelephone(List<String> telephone) {
        this.telephone = telephone;
    }

    @Override
    public String toString() {
        return "Address{" +
                "email='" + email + '\'' +
                ", telephone=" + telephone +
                '}';
    }
}

常用API如下:

import java.io.StringReader;
import java.io.StringWriter;
import org.apache.commons.betwixt.io.BeanReader;
import org.apache.commons.betwixt.io.BeanWriter;

/**
 * Betwixt  XML与Java对象之间相互转换.
 * 常用类:
 * ① BeanReader  XML转Java对象
 * ② BeanWriter  Java对象转XML
 */
public class BetwixtDemo {

    private static final String XML_HEADER = "<?xml version='1.0' encoding='UTF-8'?>\n";

    private static void xmlToJavaBean() {
        try {
            // 先创建一个XML,在这里我们硬编码了一段XML内容
            StringReader xmlReader = new StringReader(XML_HEADER + "<person><age>25</age><username>James Smith</username></person>");
            //创建BeanReader
            BeanReader beanReader = new BeanReader();
            //配置reader
            beanReader.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);
            beanReader.getBindingConfiguration().setMapIDs(false);
            //注册beans,以便betwixt知道XML将要被转化为一个什么Bean
            beanReader.registerBeanClass("person", Person.class);
            //现在我们对XML进行解析
            Person person = (Person) beanReader.parse(xmlReader);
            //输出结果
            System.out.println(person.toString());
        } catch (Exception e) {
            System.out.println("xmlToJavaBean Error");
            e.printStackTrace();
        }
    }

    private static void javaBeanToXml() {
        try {
            // 先创建一个StringWriter,我们将把它写入为一个字符串
            StringWriter outputWriter = new StringWriter();
            // Betwixt在这里仅仅是将Bean写入为一个片断
            // 所以如果要想完整的XML内容,我们应该写入头格式
            outputWriter.write(XML_HEADER);
            // 创建一个BeanWriter,其将写入到我们预备的stream中
            BeanWriter beanWriter = new BeanWriter(outputWriter);
            // 配置betwixt
            // 更多详情请参考java docs 或最新的文档
            beanWriter.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);
            beanWriter.getBindingConfiguration().setMapIDs(false);
            beanWriter.enablePrettyPrint();
            // 如果这个地方不传入XML的根节点名,Betwixt将自己猜测是什么
            // 但是让我们将例子Bean名作为根节点吧
            Person person = new Person();
            person.setUsername("张三");
            person.setAge(25);
            // 默认以类名为标签,也可以指定
            //beanWriter.write(person);
            beanWriter.write("person", person);
            //输出结果
            System.out.println(outputWriter.toString());
            // Betwixt写的是片断而不是一个文档,所以不要自动的关闭掉writers或者streams,
            //但这里仅仅是一个例子,不会做更多事情,所以可以关掉
            outputWriter.close();
        } catch (Exception e) {
            System.out.println("javaBeanToXml Error");
            e.printStackTrace();
        }
    }


    public static void main(String[] args) {
        //BetwixtDemo.xmlToJavaBean();
        BetwixtDemo.javaBeanToXml();
    }
}

 

posted @ 2020-10-25 12:55  codedot  阅读(214)  评论(0编辑  收藏  举报