| 
 | 
 
XML使用XPath的查询,就像我们平常操作数据库一样,根据某一关键字,然后取出关键字所对应的记录,然后再取出其对应的属性值。 
 
import java.io.FileInputStream; 
import java.util.List; 
import org.jdom.xpath.*; 
import org.jdom.input.SAXBuilder; 
import org.jdom.*; 
 
/** 
 * 使用JDOM操作XML文件示例--利用XPath进行查找操作 
 * 步骤: 
 * 1、去www.jdom.org下载jdom 1.0,也只有这个版本,因为作为觉得简单的才是最好的,除非XML更改才会对程序更行更改 
 * 2、准备XML文件,将放在指定的目录下: 
 * <?xml version="1.0" encoding="UTF-8" ?> 
    <student> 
    <user id='1'> 
       <name>test_boy</name> 
        <age>23</age> 
        <sex>boy</sex> 
    </user> 
    <user id='2'> 
        <name>test_girl</name> 
        <age>20</age> 
        <sex>girl</sex> 
    </user> 
    </student> 
 * 3、将代码放进去,直接运行并查看结果,就OK了 
 */  
 
public class JDomSearchTest 
{ 
  String xmlPath = "test2.xml";//原文件,必须存在 
  SAXBuilder builder=new SAXBuilder(); 
  Document document; 
  public JDomSearchTest() 
  { 
    try 
    { 
      document=builder.build(new FileInputStream(xmlPath)); 
    } 
    catch (Exception e) 
    { 
       e.printStackTrace(); 
    }   
  } 
   
  public static void main(String[] args) 
  {     
    JDomSearchTest j=new JDomSearchTest(); 
    Element root=j.document.getRootElement(); 
    List list=null; 
    try 
    { 
      //下面进行从得到的root下面的/student/user开始查找 
      //此的/student/user就相当于我们常见的目录地址一样 
      //因为XML的组织形式本来就是树形的 
      list = XPath.selectNodes(root,"/student/user"); 
    } 
    catch (JDOMException e) 
    { 
      e.printStackTrace(); 
    } 
    for(int i=0;i<list.size();i++) 
    { 
      Element e=(Element)list.get(i); 
      //取得属性 
      String id=e.getAttributeValue("id"); 
      try 
      { 
        //利用属性进行查寻 
        //得到对应id下面的name的值 
        String name = ((Text)XPath.selectSingleNode(e,"//user[@id="+id+"]/name/text()")).getTextNormalize(); 
        //得到对应id下面的age的值 
        String age=((Text)XPath.selectSingleNode(e,"//user[@id="+id+"]/age/text()")).getTextNormalize(); 
        //得到对应id下面的sex的值 
        String sex=((Text)XPath.selectSingleNode(e,"//user[@id="+id+"]/sex/text()")).getTextNormalize(); 
        System.out.println("name:"+name); 
        System.out.println("sex:"+sex); 
        System.out.println("age:"+age); 
        System.out.println("--------------------"); 
      } 
      catch (JDOMException f) 
      { 
        f.printStackTrace(); 
      } 
    } 
  } 
} 
   
 
运行结果: 
 
 
C:\test>java JDomSearchTest 
name:test_boy 
sex:boy 
age:23 
-------------------- 
name:test_girl 
sex:girl 
age:20 
-------------------- |   
 
 
 
 |