解析xpath獲取到的標簽


一、book.xml

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
    <book category="children">
        <title lang="en">Harry Potter</title>
        <author>J K. Rowling</author>
        <year>2005</year>
        <price>29.99</price>
    </book>
    <book category="cooking">
        <title lang="en">Everyday Italian</title>
        <author>Giada De Laurentiis</author>
        <year>2005</year>
        <price>30.00</price>
    </book>
    <book category="web">
        <title lang="en">Learning XML</title>
        <author>Erik T. Ray</author>
        <year>2003</year>
        <price>39.95</price>
    </book>
    <book category="web">
        <title lang="uk">XQuery Kick Start</title>
        <author>James McGovern</author>
        <year>2003</year>
        <price>49.99</price>
    </book>
</bookstore>
package edu.aeon.xml;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
/**
 * [說明]:xpath獲取節點
 * @author aeon(qq:1584875179)
 *
 */
public class XpathParser {

    public static void main(String[] args) {
        try {
            DocumentBuilderFactory documentBuilderFactory=DocumentBuilderFactory.newInstance();
            DocumentBuilder documentBuilder=documentBuilderFactory.newDocumentBuilder();
            Document document=documentBuilder.parse("config/book.xml");
            XPath xPath= XPathFactory.newInstance().newXPath();
            /**
             * 獲取 bookstore 節點下 book 屬性 category 值為 web 下的第二個 title 節點的文本內容
             * xpath路徑為:/bookstore/book[@category='web'][2]/title/text()
             */
            String str1=(String) xPath.evaluate("/bookstore/book[@category='web'][2]/title/text()", document, XPathConstants.STRING);
            System.out.println(str1);
            /**
             * 獲取 bookstore 節點下 book 屬性 category 值為 web 的 title 屬性lang為en 的節點內容
             * xpath路徑為:/bookstore/book[@category='web']/title[@lang='en']/text()
             */
            String str2=(String) xPath.evaluate("/bookstore/book[@category='web']/title[@lang='en']/text()", document, XPathConstants.STRING);
            System.out.println(str2);
            /**
             * 獲取bookstore下book屬性category值為cooking的title的lang屬性的值
             * xpath路徑為:/bookstore/book[@category='cooking']/title/@lang
             */
            String str3=(String) xPath.evaluate("/bookstore/book[@category='cooking']/title/@lang", document, XPathConstants.STRING);
            System.out.println(str3);
            /**
             *獲取 bookstore 節點下所有 book 的節點集合
             */
            NodeList nodeBookList=(NodeList) xPath.evaluate("/bookstore/book", document, XPathConstants.NODESET);
            for(int i=0;i<nodeBookList.getLength();i++){
                Element element=(Element) nodeBookList.item(i);
                String titleValue=(String) xPath.evaluate("title", element, XPathConstants.STRING);
                String authorValue=(String) xPath.evaluate("author", element, XPathConstants.STRING);
                String yearValue=(String) xPath.evaluate("year", element, XPathConstants.STRING);
                String priceValue=(String) xPath.evaluate("price", element, XPathConstants.STRING);
                System.out.println(titleValue+" "+authorValue+" "+yearValue+" "+priceValue);
                System.out.println("=========================================");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

結果截圖:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM