首頁  >  文章  >  後端開發  >  java使用xpath解析xml範例分享

java使用xpath解析xml範例分享

高洛峰
高洛峰原創
2017-01-11 12:57:591530瀏覽

XPath即為XML路徑語言(XML Path Language),它是一種用來決定XML文件中某部分位置的語言。 XPath基於XML的樹狀結構,提供在資料結構樹中尋找節點的能力。起初 XPath 的提出的初衷是將其作為一個通用的、介於XPointer與XSL間的語法模型。但是 XPath 很快的被開發者採用來當作小型查詢語言。

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对象
  DocumentBuilder builder = DocumentBuilderFactory.newInstance()
    .newDocumentBuilder();
  Document document = builder.parse(new File("bookstore.xml"));
  // 生成XPath对象
  XPath xpath = XPathFactory.newInstance().newXPath();
  // 获取节点值
  String webTitle = (String) xpath.evaluate(
    "/bookstore/book[@category='WEB']/title/text()", document,
    XPathConstants.STRING);
  System.out.println(webTitle);
  System.out.println("===========================================================");
  // 获取节点属性值
  String webTitleLang = (String) xpath.evaluate(
    "/bookstore/book[@category='WEB']/title/@lang", document,
    XPathConstants.STRING);
  System.out.println(webTitleLang);
  System.out.println("===========================================================");
  // 获取节点对象
  Node bookWeb = (Node) xpath.evaluate(
    "/bookstore/book[@category='WEB']", document,
    XPathConstants.NODE);
  System.out.println(bookWeb.getNodeName());
  System.out.println("===========================================================");
  // 获取节点集合
  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



 
   Everyday Italian 
   Giada De Laurentiis 
   2005 
   30.00 
 
 
   Harry Potter 
   J K. Rowling 
   2005 
   29.99 
 
 
   Learning XML 
   Erik T. Ray 
   2003 
   39.95 
 

更多java使用xpath解析xml範例分享相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn