xPath对xml文档的处理入门6

我测试的环境是:WindowsXP、eclipse3.2、jdk1.6、dom4j1.6.1.jar、z-dom4j-1.4.jar

package org.dom4j.document_study_XPath;

import java.io.File;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

public class XPathTest_03 {
        public static void main(String[] args) {
                readexml("C:\\seven.xml");//xml文件是上一章节的xml文件
        }
        //解析原始的xml
       public static void readexml(String xmlpath){
               SAXReader readxml = new SAXReader();
               Document doc = null;  
               try {
                       doc = readxml.read(new File(xmlpath));//解析原始的xml
                       TestSelectNodes_02(doc);
                       TestSelectNodes_03(doc);
                       TestSelectNodes_04(doc);
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }
        //通过节点的XPath轴获取一个节点 document 一个Dom4j的Document对象
       public static void TestSelectNodes_02(Document document) {
               //获取当前节点,child是固定的,root是xml的根节点,book是根节点的子节点
               Node book  = document.selectSingleNode("child::root/book");
               System.out.println(book.getName());
               List<Node> nodelist = book.selectNodes("descendant::title");//获取该节点下的所有title节点
               //获取该节点下的所有title节点和price节点
               List<Node> nodelist1 = book.selectNodes("descendant::title|descendant::price");
               for(Node node : nodelist){
                      System.out.println("title节点的名称是:"+node.getName());
               }
               System.out.println("================================");
               for(Node node : nodelist1){
                        System.out.println("title节点或price节点的名称是:"+node.getName());
               }   
       }
       //通过节点的XPath轴获取一个节点 document 一个Dom4j的Document对象
       @SuppressWarnings("unchecked")
       public static void TestSelectNodes_03(Document document) {
              //获取名称为titlechild的第一个节点
              Node book  = document.selectSingleNode("//titlechild");
              System.out.println("当前节点的名称是:"+book.getName());
              //获取该节点的所有父节点
              List<Node> nodelist = book.selectNodes("ancestor::*");
              for(Node node : nodelist){
                      System.out.println("该节点以及其所有父节点的名称是:"+node.getName());
              }
              System.out.println("================================");
              //获取该节点以及其所有父节点
              List<Node> nodelist1 = book.selectNodes("ancestor-or-self::*");
              for(Node node : nodelist1){
                       System.out.println("该节点以及其所有父节点的名称是:"+node.getName());
              }
      } 
      //通过节点的XPath轴获取一个节点 document 一个Dom4j的Document对象
      @SuppressWarnings("unchecked")
      public static void TestSelectNodes_04(Document document) {
              //获取名称为book的第一个节点
              Node book  = document.selectSingleNode("//book");
              System.out.println("当前节点的名称是:"+book.getName());
              //获取当前节点的名称为titlechild的所有孙子节点(子节点的子节点)
               List<Node> nodelist = book.selectNodes("child::*/child::titlechild");
               for(Node node : nodelist){
                       System.out.println("该节点的所有孙子节点(子节点的子节点)的名称是:"+node.getName());
               }
       }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值