`
ych516
  • 浏览: 3372 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Betwixt使用笔记——一个模板文件搞定复杂结构的Bean

阅读更多
对于复杂结构的beans,是否能够仅使用一个完整的.betwixt模版文件,而不是多个呢?

例如,对于如下的bean:
public class Person{   
    public String getName(){}   
    public void setName(String name){}   
    public Pocket getPocket(){}   
    public void setPocket(Pocket pock){}   
}   
  
public class Pocket{   
    public int getObjNum(){}   
    ……   
    public String[] getObjects(){}   
    ……   
}  

为了获取如下的xml文件:
<person>  
    <name>xiaoxiao</name>  
    <pocket>  
        <number>2</number>  
        <objects>  
            <object>000001</object>  
            <object>000002</object>  
        </objects>  
    </pocket>  
</person>  

我需要准备两个.betwixt模版文件:
Person.betwixt 和 Pocket.betwixt

那么,如何用一个模板文件搞定呢?
betwixt提供一个加载配置文件的方法:
//读取配置文件并加载   
InputSource ins = new InputSource(new FileReader("D:\\workspace\\translate_demo\\cfg\\Person.betwixt"));   
beanWriter.getXMLIntrospector().register(ins);   
  
beanWriter.write(person);  

然后编辑如下的.betwixt模板:
<?xml version="1.0"?>  
<betwixt-config>  
<!--name of the class to map -->  
    <class name="com.translate.demo.Person">  
    <!-- standard definitions (same as in standard .betwixt file)    -->  
        <element name="person">  
            <element name="name" property="name"/>  
            <element name="ych-pocket">  
                <element property="pocket"/>  
            </element>  
        </element>  
    </class>  
    <class name="com.translate.demo.Pocket">  
        <element name="pocket">  
            <element name="number" property="objNum"/>  
            <element name="objects">  
                <element name="object" property="objectName"/>  
            </element>  
        </element>  
    </class>  
</betwixt-config>  


好了,一个模板文件就搞定了~:)

注意:
<element property="pocket"/>

注意这个元素,当元素是一个复杂结构时,这里的name属性会覆盖该结构的模板中的第一层元素名,所以为了结构清晰,这里最好不要写name属性。此时,会使用该结构的类的模板的第一层元素名:
    <class name="com.translate.demo.Pocket">  
        <element name="pocket"> 
            …… 


如果模板文件如下:
                <element name="pocket_hello" property="pocket"/>  
        ……
    <class name="com.translate.demo.Pocket">  
        <element name="pocket"> 
            …… 

那么会使用pocket_hello作为结构名,得到的xml将是:
<person>  
    <name>xiaoxiao</name>  
    <pocket_hello>  
        <number>2</number>  
        <objects>  
            <object>000001</object>  
            <object>000002</object>  
        </objects>  
    </pocket_hello>  
</person>  
分享到:
评论

相关推荐

    使用Betwixt将XML转为JAVA Bean(内有JAR包)

    本教程将通过一个具体的例子,讲解如何使用Betwixt将XML数据转换为Java Bean,特别是处理XML中相同节点名的情况。 首先,我们需要了解Betwixt的基本概念。Betwixt基于JavaBeans规范,通过反射和注解来实现XML和Java...

    betwixt文件解析bai

    单对象解析通常涉及到XML文件中只包含一个根元素的情况,而复杂对象解析则涉及到XML文件中有多个嵌套元素或者复杂的数据结构。例如,一个XML文件可能包含一个员工对象,该对象有姓名、年龄等属性,也可能包含部门...

    java使用commons-betwixt 实现bean与xml互转

    2. 使用Betwixt配置:创建一个XML描述文件(如person.dtd或person.xml),定义Bean的结构和属性与XML元素的对应关系。 ```xml &lt;!DOCTYPE person [ &lt;!ELEMENT person (name,age)&gt; &lt;!ATTLIST person id CDATA #...

    commons-betwixt-0.8的相关文件

    总结来说,Apache Commons Betwixt是一个用于XML和Java对象间映射的工具,0.8版本提供了一个早期的功能集,包括基本数据类型和复杂对象的映射。开发者可以利用它来进行数据交换、序列化和反序列化操作。提供的两个...

    betwixt详细使用说明

    在本文中,我们将详细介绍 Betwixt 的使用方法、所需的依赖以及一个简单的示例。 首先,使用 Betwixt 需要导入以下三个核心库: 1. `commons-collections-3.2.jar`:提供集合操作的支持。 2. `commons-logging-...

    XML操作之betwixt

    对于一个简单的Java类,Betwixt能够自动生成XML表示,而对于复杂的类结构,如嵌套或继承,Betwixt也能处理得相当灵活。此外,它支持注解来指定特定的XML元素映射,使开发者能更精确地控制XML的生成。 在实际应用中...

    xml操作之betwixt实例

    本文将通过一个具体的Betwixt实例,来深入探讨如何使用这个库进行XML操作。首先,我们需要了解Betwixt的核心概念:绑定(Binding)。绑定是Betwixt中将Java类与XML元素或属性关联的过程。通过定义绑定,我们可以指定...

    使用betwixt进行xml与java类之间的互转解析--代码

    Betwixt是一个XML绑定工具,它允许开发者通过注解或XML配置文件来映射XML结构与Java类的属性。这种映射使得XML文档可以被解析成Java对象,或者反之,将Java对象转换为XML文档。Betwixt的目标是简化XML处理,减少手动...

    xstream和betwixt对xml、object的互转

    与XStream相比,Betwixt的使用可能稍微复杂一些,但提供了更强大的定制能力,例如通过注解或XML配置文件来指定对象的映射规则。 **Betwixt使用示例** ```java import org.apache.betwixt.io.ReadMapper; import org...

    commons-betwixt-0.8.rar源文件及jar包

    Apache Commons Betwixt 是一个Java库,它提供了一种简单的方式来映射对象到XML以及从XML反向映射回对象。这个库是基于Apache软件基金会的Jakarta Commons项目,旨在简化XML数据绑定任务,使得开发者可以专注于业务...

    commons-betwixt-0.5-src.zip_ObjectStringConvert_commons-betwixt_

    Apache Commons Betwixt 是一个Java库,它简化了JavaBean对象与XML文档之间的相互转换。这个工具包的核心功能在于,它允许开发者自动地将JavaBean的属性映射到XML结构,反之亦然,极大地提高了开发效率,尤其是在...

    betwixt互相转换JavaBean和XML(含代码和jar包)

    本资料用于JavaBean和XML之间相互转换,所用到的关于betwixt的包都在内。方法写在textXml中,由于默认的方法较为简单,且有局限性,所以本资料主要侧重从自定义的配置文件中转换xml或者生成javaBean.有兴趣的朋友...

    betwixt技术

    而Betwixt提供了一种自动的方式,通过注解或者配置文件将XML结构映射到Java类的实例上,反之亦然。这样,开发者就不需要手动解析XML来创建或更新Java对象,也不需要编写大量代码去序列化Java对象为XML。 在使用...

    javabean和xml互相转换工具类以及jar包

    在实际应用中,`Bean2xml.java`可能是一个工具类,它封装了上述转换逻辑。这个类可能包含静态方法,如`beanToXml(JavaBean bean)`用于将JavaBean转换为XML字符串,以及`xmlToBean(String xml)`用于将XML字符串反向...

    commons-betwixt-0.8.jar

    commons-betwixt-0.8.jar

    xml转换java对象

    这个例子可能包括一个简单的Java类,一个对应的XML文件,以及使用Betwixt进行转换的Java代码。 例如,假设有一个名为`Person`的Java类,包含`name`和`age`字段,对应的XML文件可能如下: ```xml &lt;name&gt;John Doe ...

    Apache Commons 工具类介绍及简单使用 (2).pdf

    例如,下面是一个使用 BeanUtils 克隆对象的示例代码: ```java import org.apache.commons.beanutils.BeanUtils; public class Test { public static void main(String[] args) { Person person = new Person();...

    webservice接口开发obj2xml.zip

    3. **配置映射**:Betwixt使用一个`BeanIntrospector`来解析对象的结构并创建默认的XML映射。然而,你可能需要自定义映射,这可以通过创建一个继承自`org.apache.commons.betwixt.ElementDescriptor`的类来实现,...

    apache-commons源码及jar文件

    Apache Commons是一个非常有用的工具包,解决各种实际的通用问题。...The commons-validator提供了一个简单的,可扩展的框架来在一个XML文件中定义校验器 (校验方法)和校验规则。支持校验规则的和错误消息的国际化。

    Websiteconfig

    在这个场景下,config节点通常是指XML文件中的一个特定部分,用来存储和管理应用程序的配置信息。下面将详细讨论相关知识点。 1. **XML配置文件**:XML(eXtensible Markup Language)是一种用于存储和传输数据的...

Global site tag (gtag.js) - Google Analytics