xPath技術

一、xPath的做用:快速獲取所須要的節點對象。node

二、在Dom4j中如何使用xPath技術?學習

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

    (2)使用方法code

        List<Node>  selectNodes("xPath表達式");//查詢多個節點對象orm

        Node  selectSingleNode("xPath表達式");//查詢一個節點對象xml

三、語法對象

         /      絕對路徑      表示從xml的根位置開始或子元素(一個層次結構)blog

                        //     相對路徑       表示不分任何層次結構的選擇元素。utf-8

                        *      通配符         表示匹配全部元素it

                        []      條件           表示選擇什麼條件下的元素

                        @     屬性            表示選擇屬性節點

                        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);
        }
    }

}
相關文章
相關標籤/搜索