JDom结合XPath的查找一列
2008-04-01 15:00
XML使用XPath的查询,就像我们平常操作数据库一样,根据某一关键字,然后取出关键字所对应的记录,然后再取出其对应的属性值。
如果想更详细了解JDom中XPath的使用,请参阅文章: http://blog.csdn.net/fenglibing/archive/2007/07/01/1674201.aspx 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 = "e:\\Mickey\\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(); } } } } |