首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

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

2012-11-21 
Betwixt使用笔记——一个模板文件搞定复杂结构的Bean对于复杂结构的beans,是否能够仅使用一个完整的.betwixt

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>  

热点排行