查看完整版本: [-- 使用jdom的XPath来快速定位xml节点 --]

风信Java论坛 ›› Java 基础开发 ›› 使用jdom的XPath来快速定位xml节点 登录 -> 注册

1F 使用jdom的XPath来快速定位xml节点   jastby Post by : 2009-06-29 10:33:35.0

在用jdom来解析xml文档的时候,我们常常需要快速定位到某一个节点进行读取或修改操作。定位节点,这正是xpath表达式发挥作用的地方。从beta 9(www.jdom.org有下载)开始,jdom开始支持解析xpath路径表达式了,这样我们在用jdom来解析xml文档的时候,方便多了。请看例子

注意:使用xpath单独使用jdom.jar是不够的,还需要引入JDom项目的lib文件夹中的jaxen-**.jar,否则会出现java.lang.NoClassDefFoundError

1.示例用xml文件,kk.xml

   xhtml代码
  1. <?xml version = "1.0" encoding="GB2312" ?> 
  2. <联系人列表> 
  3.      <联系人> 
  4.          <姓名>张三</姓名> 
  5.          <ID>001</ID> 
  6.          <公司>A公司</公司> 
  7.          <EMAIL>zhang@aaa.com</EMAIL> 
  8.          <电话 类型="公司">(010)62345678</电话> 
  9.          <电话 类型="家庭">(010)88888888</电话> 
  10.          <地址> 
  11.              <街道>五街1234号</街道> 
  12.              <城市>北京市</城市> 
  13.              <省份>北京</省份> 
  14.          </地址> 
  15.      </联系人> 
  16.  
  17.      <联系人> 
  18.          <姓名>李四</姓名> 
  19.          <ID>002</ID> 
  20.          <公司>B公司</公司> 
  21.          <EMAIL>li@bbb.org</EMAIL> 
  22.          <电话 类型="公司">(021)87654321</电话> 
  23.          <地址> 
  24.              <街道>南京路9876号</街道> 
  25.              <城市>上海</城市> 
  26.              <省份>上海</省份> 
  27.          </地址> 
  28.      </联系人> 
  29. </联系人列表> 

2.为了找到张三的家庭的电话号码,使用下列代码段

   java代码
  1. package com.test;  
  2.  
  3. import java.util.Iterator;  
  4. import java.util.List;  
  5.  
  6. import org.jdom.Document;  
  7. import org.jdom.Element;  
  8. import org.jdom.input.SAXBuilder;  
  9. import org.jdom.xpath.XPath;  
  10.  
  11. public class JDomXPathDemo {  
  12.     public static void main(String[] args) throws Exception {  
  13.  
  14.         SAXBuilder builder = new SAXBuilder();  
  15.         Document doc = builder.build("kk.xml");  
  16.         Element root = doc.getRootElement();  
  17.  
  18.         XPath xpath = XPath.newInstance("//电话[../姓名='张三'][@类型='家庭']");  
  19.         List list = xpath.selectNodes(root);  
  20.  
  21.         Iterator iter = list.iterator();  
  22.         while (iter.hasNext()) {  
  23.             Element item = (Element) iter.next();  
  24.             System.err.println(item.getText());  
  25.         }  
  26.     }  

输出结果正是我们想要的:(010)88888888.怎么样,很方便吧:)。


风信Java论坛 ›› Java 基础开发 ›› 使用jdom的XPath来快速定位xml节点 登录 -> 注册

查看完整版本: [-- 使用jdom的XPath来快速定位xml节点 --]
CopyRight © 2008-2009 JavaWind.Net Studio All Rights Reserved
Powered By JWind.BBS Vesion 1.0.0 Beta1 Processed in 8 ms,0 (Queries)  Gzip enabled
粤ICP备07511478号