快速业务通道

jxpath学习笔记 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20

jxpath学习笔记

时间:2011-01-29 blogjava Skynet

get set 参考 BeanUtil 包 和 Xpath

http://commons.apache.org/ 的 jxpath User''s Guide

类的加载

JXPathContext context=JXPathContext.newContext( obj ); //和 xpath 的 范围确定

一般取值 存值 

String fName=(String)context.getValue("firstName"); //setValue //参考 http://www.blogjava.net/Good-Game/archive/2007/08/10/135739.html

一般的统计和使用 c 为 list [id,name,.....]

JXPathContext context = JXPathContext.newContext(c);System.out.println( context.getValue("count( .[name=''oo'' and id=''1'' ] )") ); //对象 name=oo 和 id=1的有多少个System.out.println( context.getValue("sum( .[name=''oo'' and id=''1'' ]/id )") );//对象name=oo和id=1的所有id相加

得到集合

Iterator threeBooks=context.iterate("books[position()<4]"); //xpath 的位置函数 position 其他函数参考 http://www.w3.org/TR/xpath  //4 Core Function Library

xpath 使用

public class Employee {    private Map addressMap = new HashMap();    {        addressMap.put("home", new Address(...));        addressMap.put("office", new Address(...));    }    public Map getAddresses(){      return addressMap;    }    ...} String homeZipCode = (String)context. getValue("addresses[@name=''home'']/zipCode");//使用的是 addressMap map 的 key = home 的Address类属性的 zipCode

xml 在程序 与 xpath 的切入点

<?xml version="1.0" ?>    <vendor>      <location id="store101">        <address>          <street>Orchard Road</street>        </address>
      </location>
      <location id="store102">
        <address>
          <street>Tangerine Drive</street>
        </address>
      </location>
    </vendor>class Company {
    private Container locations = null;
    public Container getLocations(){
        if (locations == null){
            URL url = getClass().getResource("Vendor.xml");
            locations = new XMLDocumentContainer(url);
        }
        return locations;
    } }
  ...
  context = JXPathContext.newContext(new Company());  ...
  String street = (String)context.getValue(
                "locations/vendor/location[@id = ''store102'']//street");// 类Container的 属性 locations 头 vendor(xml内) .....

jxpath学习笔记(2)

时间:2011-01-29 blogjava Skynet

建立 Path工厂 就是 自定义字符串 得到 自定义类

public class AddressFactory extends AbstractFactory {    public boolean createObject(JXPathContext context, Pointer pointer,
                                Object parent, String name, int index){     if ((parent instanceof Employee) && name.equals("address"){
       ((Employee)parent).setAddress(new Address());
       return true;
     }
     return false;
   }
 }
 JXPathContext context = JXPathContext.newContext(emp); context.setFactory(new AddressFactory());
 context.createPath("address"); context.createPathAndS

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号