的name属性值必须是name3
Itarator companysInArray =
context.iterate("companysInArray [name=''name3'']");
//获得集合中对象的name属性为''name2''的所有对象
//iterator方法的参数companysInCollection [name=''name3'']使用了XPath的语法
//其中的companysInCollection是Association对象的属性
//他是一个Collection类型或者是其子类型的一个实例
//name=''name3''是条件表达式,表示返回对象的name属性值必须是name3
Itarator companysInCollection =
context.iterate("companysInCollection [name=''name3'']");
3.4 访问Map对象的内容
1、准备符合条件的java类package org.vivianj.jxpath.examples.pub;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.jxpath.JXPathContext;
public class MyMapSource {
private Map map = new HashMap();
public MyMapSource(){
map.put("id",new Integer(5));
map.put("name","name");
}
public Map getMapSource(){
return this.map;
}
}
2、使用JXPath访问Map的内容//实例化MyMapSource对象
MyMapSource myMapSource = new MyMapSource();
//实例化JXPath上下文
JXPathContext context = JXPathContext.newContext(myMapSource);
//通过JXPath访问Map对象的内容
// getValue方法的参数使用了XPath语法
// mapSource/id中的mapSource表示MyMapSource对象的属性,
//他是一个Map类型的对象,id表示获取该Map对象的id字段
Integer id = (Integer) context.getValue("mapSource/id");
使用JXPath访问java对象、集合和XML文件(6)
时间:2011-01-27
3.5 访问XML文件
1、编写自己的XML文件<?xml version="1.0" ?>
<companys>
<company id="101">
<name>sun</name>
<address>
<street>18 #,WenShan Road</street>
</address>
</company>
<company id="102">
<name>ibm</name>
<address>
<street>18 #,WenEr Road</street>
</address>
</company>
</companys>
2、编写一个类,返回符合条件的company内容package org.vivianj.jxpath.examples.pub;
import java.net.URL;
import org.apache.commons.jxpath.Container;
import org.apache.commons.jxpath.xml.DocumentContainer;
public class Companys {
private Container companys = null;
public Container getCompanys(){
if (companys == null){
//获取XML文件的内容
URL url = getClass().getResource("companys.xml");
//将XML的内容绑定到companys对象
companys = new DocumentContainer(url);
}
return companys;
}
}
3、使用JXPath访问XML文件的内容//实例化Companys对象
Companys companys = new Companys();
//初始化JXPath上下文
JXPathContext context = JXPathContext.newContext(companys);
//获得指定记录的子元素的内容
/*getValue方法的参数
"companys/companys/company[@id = ''101'']/address/street"
使用了XPath语法
其中的第一个companys表示访问Companys对象的companys属性
第二个companys表示访问XML数据中的companys元素
company、address、street都是xml中的元素的名字
@id = ''101''是一个条件表达式,表示符合条件的company元素的id属性必须是101
*/
String street = (String)context.getValue(
"companys/companys/company[@id = ''101'']/address/street");
//通过JXPath获取xml元素的属性的值
logger.debug |