使用JXPath Java对象的查询

  

指定表格中<坳宽度=" 175 "/> <坳宽度=" 97 "/> <坳宽度=" 241 "/> 指定表格中公司

部门

员工(姓名、职称、年龄)

Acme Inc .

销售,销售代表,45

莎拉,销售代表,33

玛格达,办公室助理,27日

会计史蒂夫,头控制器,51

彼得,助理控制器,31日

苏珊,办公室助理,27日

的地方,让我们开始使用JXPath !

执行简单JXPath查询

最简单的查询从对象中提取一个对象树。例如,检索<代码>公司>

 <代码> JXPathContext上下文=<强> JXPathContext.newContext(公司)强;
  公司c=(公司)context.getValue(“。”); 
  

第一行显示了创建一个<代码>中> rootnode 元素在XML文档中)。第二行代码执行实际的查询。因为我们的<代码> 背景开始在公司层面,来检索公司<代码> 对象,我们只是使用当前元素选择器<代码>。

使用谓词和变量

<代码>员工是<代码>部门的子对象> 命名为“约翰”使用下面的代码(公司<代码> 还是<代码>上下文 ' s起点):

 <代码>员工emp=(员工)context.getValue(<强>“departmentList/员工[name='约翰尼']" );
  

基本上,代码写着:“搜索所有部门<代码> <代码>的年代从一开始员工> 名称> 约翰尼>

上面的代码片段演示了如何使用一个谓词来搜索对象通过使用特定的值。使用谓词与使用WHERE子句的SQL。我们甚至可以在一个查询中组合多个谓词:

 <代码>员工emp=(员工)上下文。getValue(<强>“departmentList/员工[name=八丈骸焙湍炅?27]”);
  

除非你使用一个特别,url查询,实现硬编码的查询通常不可行。最好是定义一个可重用的查询,您可以执行不同的参数。以适应参数化查询,JXPath支持变量 查询。使用变量,现在上面的代码是这样的:

 <代码> context.getVariables () .declareVariable(<强>“name”强,“苏珊”);
  context.getVariables () .declareVariable(<强> “年龄”,新的整数(27));
  员工emp=(员工)上下文。getValue (“/departmentList/员工[name= <强> $ name和年龄=<强> $年龄]”);
  对集合进行遍历

JXPath可以提供一个迭代器在所有对象检索查询,就像迭代一个结果集。以下代码片段显示了如何遍历所有部门<代码> :

 <代码> (Iterator iter=<强> context.iterate (“/departmentList”) 强;iter.hasNext ();) {
  部门d=(部门)iter.next ();//?
  }
  

检索所有<代码>员工从所有<代码> s部门代码>

 <代码> (Iterator iter=context.iterate(<强>“departmentList/员工”);iter.hasNext ();) {
  员工emp=(员工)iter.next ();//?
  }
  

检索所有员工<代码> s 30年以上的销售部门:

 <代码> (Iterator iter=context.iterate
  (<强> "/departmentList [name='销售']/员工(年龄> 30)”);iter.hasNext ();) {
  员工emp=(员工)iter.next ();//?
  }
  

变量和上面的例子:

 <代码> context.getVariables () .declareVariable(<强>“deptName”,“销售”);
  context.getVariables () .declareVariable(<强>“minAge”强,新的整数(30));
  (迭代器iter=context.iterate (“/departmentList
  [name=<强> $ deptName ]/员工(年龄> <>强劲美元minAge ]”);iter.hasNext ();) {
  员工emp=(员工)iter.next ();//?
  }
  

最后这两个代码片段也展示一些在一个XPath查询谓词的使用。

指针

<代码>指针> 指针> 指针 s提供额外功能的执行 相对查询通过 相对上下文(后面详细讨论)。使用指针

有一个<代码> 指针指向一个对象在对象树是几乎相同的直接检索对象:

 <代码>=JXPathContext.newContext JXPathContext上下文(公司);
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null

使用JXPath Java对象的查询