java使用xpath解析xml示例分享
XPath即為XML路徑語(yǔ)言(XML Path Language),它是一種用來(lái)確定XML文檔中某部分位置的語(yǔ)言。XPath基于XML的樹(shù)狀結(jié)構(gòu),提供在數(shù)據(jù)結(jié)構(gòu)樹(shù)中找尋節(jié)點(diǎn)的能力。起初 XPath 的提出的初衷是將其作為一個(gè)通用的、介于XPointer與XSL間的語(yǔ)法模型。但是 XPath 很快的被開(kāi)發(fā)者采用來(lái)當(dāng)作小型查詢(xún)語(yǔ)言。
XPathTest.java
package com.hongyuan.test;
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class XPathTest {
public static void main(String[] args) throws ParserConfigurationException,
SAXException, IOException, XPathExpressionException {
// 解析文件,生成document對(duì)象
DocumentBuilder builder = DocumentBuilderFactory.newInstance()
.newDocumentBuilder();
Document document = builder.parse(new File("bookstore.xml"));
// 生成XPath對(duì)象
XPath xpath = XPathFactory.newInstance().newXPath();
// 獲取節(jié)點(diǎn)值
String webTitle = (String) xpath.evaluate(
"/bookstore/book[@category='WEB']/title/text()", document,
XPathConstants.STRING);
System.out.println(webTitle);
System.out.println("===========================================================");
// 獲取節(jié)點(diǎn)屬性值
String webTitleLang = (String) xpath.evaluate(
"/bookstore/book[@category='WEB']/title/@lang", document,
XPathConstants.STRING);
System.out.println(webTitleLang);
System.out.println("===========================================================");
// 獲取節(jié)點(diǎn)對(duì)象
Node bookWeb = (Node) xpath.evaluate(
"/bookstore/book[@category='WEB']", document,
XPathConstants.NODE);
System.out.println(bookWeb.getNodeName());
System.out.println("===========================================================");
// 獲取節(jié)點(diǎn)集合
NodeList books = (NodeList) xpath.evaluate("/bookstore/book", document,
XPathConstants.NODESET);
for (int i = 0; i < books.getLength(); i++) {
Node book = books.item(i);
System.out.println(xpath.evaluate("@category", book,
XPathConstants.STRING));
}
System.out.println("===========================================================");
}
}
bookstore.xml
<?xml version="1.0" encoding="utf-8" ?>
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
運(yùn)行效果

相關(guān)文章
java報(bào)錯(cuò)非法的前向引用問(wèn)題
這篇文章主要介紹了java報(bào)錯(cuò)非法的前向引用問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05深入解析Java中的編碼轉(zhuǎn)換以及編碼和解碼操作
這篇文章主要介紹了Java中的編碼轉(zhuǎn)換以及編碼和解碼操作,文中詳細(xì)解讀了編碼解碼的相關(guān)IO操作以及內(nèi)存使用方面的知識(shí),需要的朋友可以參考下2016-02-02springBoot解決static和@Component遇到的bug
這篇文章主要介紹了springBoot解決static和@Component遇到的bug,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02jax-ws handler 的詳解及簡(jiǎn)單實(shí)例
這篇文章主要介紹了 jax-ws handler 的詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-09-09淺談Java中Collection和Collections的區(qū)別
下面小編就為大家?guī)?lái)一篇淺談Java中Collection和Collections的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08解讀Spring接口方法加@Transactional失效的原因
這篇文章主要介紹了Spring接口方法加@Transactional失效的原因解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03詳解Java 包掃描實(shí)現(xiàn)和應(yīng)用(Jar篇)
這篇文章主要介紹了詳解Java 包掃描實(shí)現(xiàn)和應(yīng)用(Jar篇),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07解決@Transaction注解導(dǎo)致動(dòng)態(tài)切換更改數(shù)據(jù)庫(kù)失效問(wèn)題
這篇文章主要介紹了解決@Transaction注解導(dǎo)致動(dòng)態(tài)切換更改數(shù)據(jù)庫(kù)失效問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09文件路徑正確,報(bào)java.io.FileNotFoundException異常的原因及解決辦法
這篇文章主要介紹了文件路徑正確,報(bào)java.io.FileNotFoundException異常的原因及解決辦法的相關(guān)資料,需要的朋友可以參考下2016-04-04