首页 > 代码库 > xPath技术

xPath技术

1、xPath的作用:快速获取所需要的节点对象。

2、在Dom4j中如何使用xPath技术?

    (1)导入xPath支持的jar包。  jaxen-1.1-beta-6.jar

    (2)使用方法

        List<Node>  selectNodes("xPath表达式");//查询多个节点对象

        Node  selectSingleNode("xPath表达式");//查询一个节点对象

3、语法

         /      绝对路径      表示从xml的根位置开始或子元素(一个层次结构)

                        //     相对路径       表示不分任何层次结构的选择元素。

                        *      通配符         表示匹配所有元素

                        []      条件           表示选择什么条件下的元素

                        @     属性            表示选择属性节点

                        and     关系          表示条件的与关系(等价于&&)

                        text()    文本           表示选择文本内容

3.1

/**
 * 第一个xpath程序
 * @author APPle
 *
 */
public class Demo1 {

    
    public static void main(String[] args) throws Exception{
        /**
         * 需求: 删除id值为2的学生标签
         */
        Document doc = new SAXReader().read(new File("e:/student.xml"));
        
        //1.查询id为2的学生标签
        //使用xpath技术
        Element stuElem = (Element)doc.selectSingleNode("//Student[@id=‘2‘]");

        //2.删除标签
        stuElem.detach();
        
        //3.写出xml文件
        FileOutputStream out = new FileOutputStream("e:/student.xml");
        OutputFormat format = OutputFormat.createPrettyPrint();
        format.setEncoding("utf-8");
        XMLWriter writer = new XMLWriter(out,format);
        writer.write(doc);
        writer.close();
    }

}

3.2

/**
 * 学习xPath表达式语法
 * @author APPle
 *
 */
public class Demo2 {

    public static void main(String[] args) throws Exception {
        Document doc = new SAXReader().read(new File("./src/contact.xml"));
        
        String xpath = "";
        
        /**
         * 1.      /      绝对路径      表示从xml的根位置开始或子元素(一个层次结构)
         */
        xpath = "/contactList";
        xpath = "/contactList/contact";
        
        /**
         * 2. //     相对路径       表示不分任何层次结构的选择元素。
         */
        xpath = "//contact/name";
        xpath = "//name";
        
        /**
         * 3. *      通配符         表示匹配所有元素
         */
        xpath = "/contactList/*"; //根标签contactList下的所有子标签
        xpath = "/contactList//*";//根标签contactList下的所有标签(不分层次结构)
        
        /**
         * 4. []      条件           表示选择什么条件下的元素
         */
        //带有id属性的contact标签
        xpath = "//contact[@id]";
        //第二个的contact标签
        xpath = "//contact[2]";
        //选择最后一个contact标签
        xpath = "//contact[last()]";
        
        /**
         * 5. @     属性            表示选择属性节点
         */
        xpath = "//@id"; //选择id属性节点对象,返回的是Attribute对象
        xpath = "//contact[not(@id)]";//选择不包含id属性的contact标签节点
        xpath = "//contact[@id=‘002‘]";//选择id属性值为002的contact标签
        xpath = "//contact[@id=‘001‘ and @name=‘eric‘]";//选择id属性值为001,且name属性为eric的contact标签
        
        /**
         *6.  text()   表示选择文本内容
         */
        //选择name标签下的文本内容,返回Text对象
        xpath = "//name/text()";
        xpath = "//contact/name[text()=‘张三‘]";//选择姓名为张三的name标签
        
        
        List<Node> list = doc.selectNodes(xpath);
        for (Node node : list) {
            System.out.println(node);
        }
    }

}

 

xPath技术