服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java深入了解:javabeans 增加xpath功能

向一个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站点 。


扫描关注微信公众号