JSPCN主页 | JSP空间 | 网站制作 | JSP下载 | JSP论坛 | JSP教程 | 关于JSPCN | 联系我们
JSP虚拟主机,jsp空间,java空间,java虚拟空间,详细请点击进入
做最专业的JSP中文网站 当前位置首页--JSP技术--JAVABEAN  
文章搜索:
关键字 标题
  
JSP中文网内容管理系统(JCMS)
JSP虚拟主机
网络笔记本
网摘,图片,笔记收藏
虚拟服务器

JSPCN文章目录分类
JSP配置[219]JSP基础[136]
中文问题[69]上传问题[27]
JAVABEAN[46]数据库[212]
文件操作[126]图片声音[17]
JSP其他[57]时间相关[16]
JAVAMAIL[72]STRUTS[144]
开发工具[28]教程系列[157]
JSP实例[89]
JAVA基础[421]APPLET[78]
JAVA网络[179]Applica[115]
Servlet[98]XML[163]
J2ME[257]J2EE[374]
考试相关[63]JAVA线程[90]
EJB[261]Swing[26]
Java API[141]声音图片[28]
异常处理[33]JAVA实例[290]
JAVA类[139]SUN[89]
Hibernate[6]JMX[8]
Spring[34]
本版推荐文章 
本版热点文章 
相关文章链接 
 
给JavaBeans 增加XPath功能
作者:     文章来源:
访问次数:109次     加入时间:2007年04月06日
本文是为ZDNet翻译的系列文章之一,原文已经发表在ZDNet网站

向一个JavaBean请求'addressbook[1].state.code' 是现在还在使用的和JavaBeans 进行交互的一个通常的方法,但是你现在可以更进一步使用功能更强大的XPath规范。 
创建XPath的目的是访问和修改XML中的数据,但是Apache Jakarta的一个新项目允许你将强大的XPath规范的功能应用到普通的JavaBeans上。 
作为一个例子,我们使用具有下面的结构的JavaBean : 
Person.name     是一个字符串 String
Person.age       是一个整数
Person.birthtown 是一个Town对象
Person.address   是一个Address 对象的数组

Town.name        是一个字符串

Address.number   是一个字符串
Address.street   是一个字符串
Address.town     是一个Town对象 
(为了简单没有提供源代码) 
对于给定的Person对象,你可以使用"name"得到对象的名字,你可以使用"birthtown/name"得到出身地的名字,你也可以使用"address[number='21']/town/name"得到和地址(例如21)关联的城镇的名字。 
除了更强大以外,XPath 和通常的bean符号的主要不同是使用反斜线('/')而不是句点('.')分隔元素,一旦你习惯这个特征就都会变得很简单。 
下面的代码展示了使用JXPath 将XPath 符号应用到我们的JavaBean 结构是多么的简单: 
import org.apache.commons.jxpath.JXPathContext;

    ....
        Person person = ....;
        JXPathContext context = JXPathContext.newContext(person);
        System.out.println(context.getValue("name"));
        System.out.println(context.getValue("age"));
        System.out.println(context.getValue("birthtown/name"));
        System.out.println(context.getValue("address[number='21']/street"));
        System.out.println(context.getValue("address[number='21']/town/name"));
   .... 
XPath可以用于设置值或者创建beans,当然也可以读取值,关于XPath和它的JXPath的实现的更多信息请参考JXPath站点 。

Copyright © 2002-2005 JSPCN.net. All rights reserved.
JSP中文网    备案序号:蜀ICP备05001583号
成都恒海科技发展有限公司    成都市一环路南二段6号新瑞楼三楼8号