对于复杂结构的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,特别是处理XML中相同节点名的情况。 首先,我们需要了解Betwixt的基本概念。Betwixt基于JavaBeans规范,通过反射和注解来实现XML和Java...
单对象解析通常涉及到XML文件中只包含一个根元素的情况,而复杂对象解析则涉及到XML文件中有多个嵌套元素或者复杂的数据结构。例如,一个XML文件可能包含一个员工对象,该对象有姓名、年龄等属性,也可能包含部门...
2. 使用Betwixt配置:创建一个XML描述文件(如person.dtd或person.xml),定义Bean的结构和属性与XML元素的对应关系。 ```xml <!DOCTYPE person [ <!ELEMENT person (name,age)> <!ATTLIST person id CDATA #...
总结来说,Apache Commons Betwixt是一个用于XML和Java对象间映射的工具,0.8版本提供了一个早期的功能集,包括基本数据类型和复杂对象的映射。开发者可以利用它来进行数据交换、序列化和反序列化操作。提供的两个...
在本文中,我们将详细介绍 Betwixt 的使用方法、所需的依赖以及一个简单的示例。 首先,使用 Betwixt 需要导入以下三个核心库: 1. `commons-collections-3.2.jar`:提供集合操作的支持。 2. `commons-logging-...
对于一个简单的Java类,Betwixt能够自动生成XML表示,而对于复杂的类结构,如嵌套或继承,Betwixt也能处理得相当灵活。此外,它支持注解来指定特定的XML元素映射,使开发者能更精确地控制XML的生成。 在实际应用中...
本文将通过一个具体的Betwixt实例,来深入探讨如何使用这个库进行XML操作。首先,我们需要了解Betwixt的核心概念:绑定(Binding)。绑定是Betwixt中将Java类与XML元素或属性关联的过程。通过定义绑定,我们可以指定...
Betwixt是一个XML绑定工具,它允许开发者通过注解或XML配置文件来映射XML结构与Java类的属性。这种映射使得XML文档可以被解析成Java对象,或者反之,将Java对象转换为XML文档。Betwixt的目标是简化XML处理,减少手动...
与XStream相比,Betwixt的使用可能稍微复杂一些,但提供了更强大的定制能力,例如通过注解或XML配置文件来指定对象的映射规则。 **Betwixt使用示例** ```java import org.apache.betwixt.io.ReadMapper; import org...
Apache Commons Betwixt 是一个Java库,它提供了一种简单的方式来映射对象到XML以及从XML反向映射回对象。这个库是基于Apache软件基金会的Jakarta Commons项目,旨在简化XML数据绑定任务,使得开发者可以专注于业务...
Apache Commons Betwixt 是一个Java库,它简化了JavaBean对象与XML文档之间的相互转换。这个工具包的核心功能在于,它允许开发者自动地将JavaBean的属性映射到XML结构,反之亦然,极大地提高了开发效率,尤其是在...
本资料用于JavaBean和XML之间相互转换,所用到的关于betwixt的包都在内。方法写在textXml中,由于默认的方法较为简单,且有局限性,所以本资料主要侧重从自定义的配置文件中转换xml或者生成javaBean.有兴趣的朋友...
而Betwixt提供了一种自动的方式,通过注解或者配置文件将XML结构映射到Java类的实例上,反之亦然。这样,开发者就不需要手动解析XML来创建或更新Java对象,也不需要编写大量代码去序列化Java对象为XML。 在使用...
在实际应用中,`Bean2xml.java`可能是一个工具类,它封装了上述转换逻辑。这个类可能包含静态方法,如`beanToXml(JavaBean bean)`用于将JavaBean转换为XML字符串,以及`xmlToBean(String xml)`用于将XML字符串反向...
commons-betwixt-0.8.jar
这个例子可能包括一个简单的Java类,一个对应的XML文件,以及使用Betwixt进行转换的Java代码。 例如,假设有一个名为`Person`的Java类,包含`name`和`age`字段,对应的XML文件可能如下: ```xml <name>John Doe ...
例如,下面是一个使用 BeanUtils 克隆对象的示例代码: ```java import org.apache.commons.beanutils.BeanUtils; public class Test { public static void main(String[] args) { Person person = new Person();...
3. **配置映射**:Betwixt使用一个`BeanIntrospector`来解析对象的结构并创建默认的XML映射。然而,你可能需要自定义映射,这可以通过创建一个继承自`org.apache.commons.betwixt.ElementDescriptor`的类来实现,...
Apache Commons是一个非常有用的工具包,解决各种实际的通用问题。...The commons-validator提供了一个简单的,可扩展的框架来在一个XML文件中定义校验器 (校验方法)和校验规则。支持校验规则的和错误消息的国际化。
在这个场景下,config节点通常是指XML文件中的一个特定部分,用来存储和管理应用程序的配置信息。下面将详细讨论相关知识点。 1. **XML配置文件**:XML(eXtensible Markup Language)是一种用于存储和传输数据的...