爱心技术专栏专题

Jive中Jdom使用剖析

摘录:java 来源:java 加入时间:2006年08月11日
摘要:
Jive中Jdom使用剖析

板桥里人 
;
2002/06/04

著名的Open Source论坛…

转载:转载请保留本信息,本文来自
http://www.51dibs.com
/html/2006/article/info11/a_f7fd556be25bf8b7.htm

Jive中Jdom使用剖析

站点:爱心种子小博士 关键字:Jive中Jdom使用剖析

   
Jive中Jdom使用剖析
板桥里人 
;
2002/06/04

著名的Open Source论坛Jive有很多东西值得我们分析和学习,通过分析其Jdom的使用机制,我们可以自如方便的读写XML配置文件,从而实现下列一些功能:

  1. 在配置文件中设置系统语言版本属性,不同语言版本,系统界面文字不一样,可以定义自己国家的文字,比如英文版 中文简体版. 这样,可以很方便的将一个系统延伸到各种语言,不用直接修改程序,只要修改XML配置文件就可以.

  2. 在配置文件中设置邮件内容, 通常一个系统都有各种自动邮件分发,比如用户注册成功后,会有一封Email发送到他的信箱,这套系统安装在不同客户场合,Email的内容当然不一样,如A客户使用了这套系统,当然希望在Email中有A客户的单位名称,这些都不必修改程序可以完成.

  3. 设置系统的可选属性,一个系统安装在不同客户场合中,客户的要求总有些不一样,有些功能是可选的,那么当然这些都要设置在XML配置文件中.

  4. 使用XML存放树形结构记录是最方便的,尤其对于那些目录分类系统,如Yahoo,在大分类中有小分类,或者直接是元素



我们知道关系数据库是不擅长存放树形数据,在关系数据库中,典型做法是采取两个表:一个表记录每个cell;一个表指明其前后关系;但是我们一旦要从这两张表展开树形结构,将要在空间和时间上反复平衡.

如果使用XML作为数据源,就很方便解决这个问题,如果配合对XML数据源有很方便的增 修 删 等功能,那么我们当然选择XML,实际上,Jdom就方便地提供了这个工具.Jdom是类似DOM SAX之类的XML解析办法,只适合Java语言,Jdom的特点就是简单方便。

那么,让我们来看看Jive是怎么实现上面功能的吧,它是把这些属性都写在一个叫jive_config.xml的文件中.这个XML文件的排列方式和使用方式是这样:

XML文件内容格式:

  1. <!-- root element, all properties must be under this element -->
  2. <jive>
  3.  <email>
  4.   <fromName>Jive_Administrator</fromName>
  5.   <fromEmail>[email protected]</fromEmail>
  6.   <subject>Your thread was updated!</subject>
  7.   <body>Hello {name}! The thread {threadName} was updated!</body>
  8.  </email>
  9. <jive> 

 
 
<jive></jive>是根元素,所有的属性必须在其中

使用方式也比较简单,使用标点符号"."来间隔.比如我们要得到上面的[email protected]的值,那么使用email.fromEmail就可以.在Jive中,具体语句就是JiveGlobals.getJiveProperty("email.fromEmail");

这样获取值很简单,而且明了,无论XML树形结构有多深,我们都可以方便的获取.

这里关键的是一个使用Jdom来解析XML文件的类:XMLProperties 其中实现了几个主要操作方法:

获得(查询):getProperty(name) ;
新增修改:properties.setProperty(name, value);
删除:properties.deleteProperty(name) ;

这几个方法是不是很类似Hasntable的方法?Hashtable中数据是存放在内存中,而XML是存放在文件系统,无疑我们可以象使用hashtable一样方便的使用XML。

XMLProperties我们可以原封不动的拷贝到我们系统中。唯一要做的就是编制类似Jive的JiveGlobals,其实这也很简单,分两步:先load取出XML文件;然后就提供getProperty(name)等方法。如

  1. public class JiveGlobals {
  2.  private static final  JIVE_CONFIG_FILENAME = "jive_config.xml";
  3. .... 
  4.  public static  getJiveProperty( name) {
  5.   loadProperties();
  6.   return properties.getProperty(name);
  7.  }
  8. .... 
  9.  private synchronized static void loadProperties() {
  10.   if (properties == null) {
  11.    //Create a manager with the full path to the xml config file.
  12.    properties = new XMLProperties(jiveHome + File.separator +
  13.            JIVE_CONFIG_FILENAME);
  14.   }
  15.  }
  16. }



当然,所有这些前提,是到http://www.jdom.org下载Jdom包,并加入到Tomcat的common/lib中,或者放入Classpath中。

其他辅助文件有:DataFormatFilter.java DataUnformatFilter.java XMLFilterBase.java
如果你对Jdom具体每一句是如何使用的,可以仔细研究XMLProperties,很容易理解的.




客户服务中心信箱:[email protected] [email protected] 网站地图

声明

合作伙伴: