向一個(gè)javaBean請(qǐng)求´addressbook[1].state.code´ 是現(xiàn)在還在使用的和JavaBeans 進(jìn)行交互的一個(gè)通常的方法,但是你現(xiàn)在可以更進(jìn)一步使用功能更強(qiáng)大的XPath規(guī)范。
創(chuàng)建XPath的目的是訪問和修改xml中的數(shù)據(jù),但是Apache Jakarta的一個(gè)新項(xiàng)目答應(yīng)你將強(qiáng)大的XPath規(guī)范的功能應(yīng)用到普通的JavaBeans上。
作為一個(gè)例子,我們使用具有下面的結(jié)構(gòu)的JavaBean :
Person.name 是一個(gè)字符串 String
Person.age 是一個(gè)整數(shù)
Person.birthtown 是一個(gè)Town對(duì)象
Person.address 是一個(gè)Address 對(duì)象的數(shù)組
Town.name 是一個(gè)字符串
Address.number 是一個(gè)字符串
Address.street 是一個(gè)字符串
Address.town 是一個(gè)Town對(duì)象
(為了簡(jiǎn)單沒有提供源代碼)
對(duì)于給定的Person對(duì)象,你可以使用"name"得到對(duì)象的名字,你可以使用"birthtown/name"得到出身地的名字,你也可以使用"address[number=´21´]/town/name"得到和地址(例如21)關(guān)聯(lián)的城鎮(zhèn)的名字。
除了更強(qiáng)大以外,XPath 和通常的bean符號(hào)的主要不同是使用反斜線(´/´)而不是句點(diǎn)(´.´)分隔元素,一旦你習(xí)慣這個(gè)特征就都會(huì)變得很簡(jiǎn)單。
下面的代碼展示了使用JXPath 將XPath 符號(hào)應(yīng)用到我們的JavaBean 結(jié)構(gòu)是多么的簡(jiǎn)單:
import org.apache.commons.jxpath.JXPathContext;
....
Person person = ....;
JXPathContext context = JXPathContext.newContext(person);
System.out.
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可以用于設(shè)置值或者創(chuàng)建beans,當(dāng)然也可以讀取值,關(guān)于XPath和它的JXPath的實(shí)現(xiàn)的更多信息請(qǐng)參考JXPath(http://cl.com.com/Click?q=07-HqWzI5r6thQfumBcRgUiQzxyYbfy)站點(diǎn) 。
注:本文是為ZDNet翻譯的系列文章之一,原文已經(jīng)發(fā)表在ZDNet網(wǎng)站
|
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注