Betwixt施用笔记——一个模板文件搞定复杂结构的Bean
Betwixt使用笔记——一个模板文件搞定复杂结构的Bean
对于复杂结构的beans,是否能够仅使用一个完整的.betwixt模版文件,而不是多个呢?
例如,对于如下的bean:
为了获取如下的xml文件:
我需要准备两个.betwixt模版文件:
Person.betwixt 和 Pocket.betwixt
那么,如何用一个模板文件搞定呢?
betwixt提供一个加载配置文件的方法:
然后编辑如下的.betwixt模板:
好了,一个模板文件就搞定了~:)
注意:
注意这个元素,当元素是一个复杂结构时,这里的name属性会覆盖该结构的模板中的第一层元素名,所以为了结构清晰,这里最好不要写name属性。此时,会使用该结构的类的模板的第一层元素名:
如果模板文件如下:
那么会使用pocket_hello作为结构名,得到的xml将是:
对于复杂结构的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>