apache commons betwixt笔记

本文介绍如何在JavaBean和XML间进行灵活转换,包括使用Betwixt工具包进行属性名映射的方法,以及具体的Java代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在xml和javabean之间可以方便的相互转换。

bean和xml的转换,Sun对javabean的应用加了不少限制,
有很重要一条,就是bean的属性名制约。

但是RT的工具包,可以实现换名转换。
此功能十分灵巧方便,只要另写一份配置文件即可。

代码上来:

Root.java
package in;

import java.util.ArrayList;

public class Root {
    public Root(){}
   
    private ArrayList<Foo> foos = new ArrayList<Foo>();

    public ArrayList<Foo> getFoos() {
        return foos;
    }

    public void setFoos(ArrayList<Foo> foos) {
        this.foos = foos;
    }
    //重点是这个方法,不能漏掉
    public void addFoo(Foo foo) {
        foos.add(foo);
    }

}


Foo.java
package in;

public class Foo {
    private String yuck;

    public Foo() {
    }

    public Foo(String yuck) {
        this.yuck = yuck;
    }

    public String getYuck() {
        return yuck;
    }

    public void setYuck(String yuck) {
        this.yuck = yuck;
    }

}

Root.betwixt:
<?xml version="1.0" encoding="UTF-8"?>
<info primitiveType="element">
    <element name="Root">
        <element name="Foo" property="foos" />
        <addDefaults/>
    </element>
</info>

Foo.betwixt:
<?xml version="1.0" encoding="UTF-8"?>
<info primitiveType="element">
    <element name="Foo">
        <element name="Yuck" property="yuck" />
        <addDefaults/>
    </element>
</info>


这里的结构是Root Bean里含有一个List属性的子Bean.
这样做,更具有一般性。



Bean向xml写文件:

StringWriter sw = new StringWriter();
sw.write("<?xml version='1.0' ?>/n");

BeanWriter bw = new BeanWriter(sw);
bw.getBindingConfiguration().setMapIDs(false);
bw.enablePrettyPrint();

Root root = new Root();
ArrayList<Foo> foo = new ArrayList<Foo>();
foo.add(new Foo("Yuck001"));
foo.add(new Foo("Yuck002"));
foo.add(new Foo("Yuck003"));

root.setFoos(foo);

bw.write("Root", root);


FileWriter fw = new FileWriter(new File("a.xml"));
fw.append(sw.toString());
fw.flush();
fw.close();


从xml那里读到bean里:

BeanReader beanReader = new BeanReader();

beanReader.registerBeanClass("Root", Root.class);
Root root = (Root) beanReader.parse(new File("a.xml"));

ArrayList<Foo> foos = root.getFoos();
for (Foo foo: foos) {
    System.out.println(foo.getYuck());
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值