科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道使用JXPath查询Java对象 2

使用JXPath查询Java对象 2

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

?   执行简单的JXPath 查询   最简单的查询就是从对象树中查找一个对象,例如,要查找公司,用下面的代码: JXPathContext context = JXPathContext.newContext(company); Company

作者:中国IT实验室 来源:中国IT实验室 2007年9月9日

关键字: 查询 JXPath 编程 java

  • 评论
  • 分享微博
  • 分享邮件

 

  执行简单的JXPath 查询

  最简单的查询就是从对象树中查找一个对象,例如,要查找公司,用下面的代码:

JXPathContext context = JXPathContext.newContext(company);
Company c = (Company)context.getValue(".");

  第一行展示了context (上下文)的创建,也就是对象树中所有JXPath的xpath 规则的起始点(相当于XML文档的根节点元素)。

  第二行执行了实际的查询,因为这里的上下文是以公司开始的,所以要获取公司对象,只需要使用当前元素选择器“。”。

  使用谓词和变量

  一个员工是部门的子对象,获取员工名为johnny 的代码如下:

Employee emp = (Employee)context.getValue("/departmentList/employees[name='Johnny']");

  这段代码可以这样理解:遍历所有的部门寻找姓名为johnny的员工

  上面的代码段解释了如何使用谓词进行对象的搜索,使用谓词相当于SQL语句中的where字句,我们可以绑定多条谓词:

Employee emp =
(Employee)context.getValue("/departmentList/employees[name='Susan' and age=27]");

  如果你不是只进行一次查询的话,像上面这样的硬编码一般都不可取,更好的方法是定义一个可重用的查询,那么你就可以在多条语句中进行重用,为适应参数化的查询JXPath 支持变量查询,代码如下:

context.getVariables().declareVariable("name", "Susan");
context.getVariables().declareVariable("age", new Integer(27));
Employee emp =
(Employee)context.getValue("/departmentList/employees[name=$name and age=$age]");

  对于集合元素的迭代

  JXPath 提供了一个迭代器,可以对查询的结果进行迭代,下面的代码:

for(Iterator iter = context.iterate("/departmentList"); iter.hasNext();)...{
Department d = (Department)iter.next();
//...
}

  迭代所有员工的代码如下:

for(Iterator iter = context.iterate("/departmentList/employees"); iter.hasNext();)...{
Employee emp = (Employee)iter.next();
//...
}

  下面是一个结合变量绑定和迭代的例子:

context.getVariables().declareVariable("deptName", "Sales");
context.getVariables().declareVariable("minAge", new Integer(30));
for(Iterator iter = context.iterate("/departmentList
[name=$deptName]/employees[age>$minAge]"); iter.hasNext();){
Employee emp = (Employee)iter.next();
//
}

上一页  [1] [2] [3] 下一页  

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章