看完例子就会了
[b]关键点[/b]
1.context.setFunctions(new ClassFunctions(String.class, "string"));
参数String.class:将String类中的方法注入到context中
参数string:方法的命名空间,下面会用[color=red]string:+方法名[/color]的方式调用对应方法
2.查询关键字match转换成小写
3.context.iterate("/.[contains(string:toLowerCase(name),\'" + match + "\')]");
使用String.toLowerCase将Person对象的name属性转换成小写,然后与match匹配
例子中打印结果如下:
name:Json age:20
name:JSON age:21
public class Person {
private String name;
private int age;
/**
*
*/
public Person() {
}
public Person(String name) {
this.name = name;
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
/**
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "name:" + (this.name == null ? "" : name) + " age:" + this.age;
}
public static void main(String[] args) {
List<Person> persons = new ArrayList<Person>();
persons.add(new Person("Json", 20));
persons.add(new Person("JSON", 21));
persons.add(new Person("jacson", 22));
JXPathContext context = JXPathContext.newContext(persons);
context.setLenient(true);
context.setFunctions(new ClassFunctions(String.class, "string"));
String match = "Js".toLowerCase();
for (Iterator<?> iterator = context.iterate("/.[contains(string:toLowerCase(name),\'" + match + "\')]"); iterator
.hasNext();) {
System.out.println(((Person) iterator.next()).toString());
}
}
}
[b]关键点[/b]
1.context.setFunctions(new ClassFunctions(String.class, "string"));
参数String.class:将String类中的方法注入到context中
参数string:方法的命名空间,下面会用[color=red]string:+方法名[/color]的方式调用对应方法
2.查询关键字match转换成小写
3.context.iterate("/.[contains(string:toLowerCase(name),\'" + match + "\')]");
使用String.toLowerCase将Person对象的name属性转换成小写,然后与match匹配
例子中打印结果如下:
name:Json age:20
name:JSON age:21