Java xpath 示例 – 在 xml 文件上求值 xpath

Java xpath 示例 – 在 xml 文件上求值 xpath

原文: https://howtodoinjava.com/xml/evaluate-xpath-on-dom/

Java xpath 示例读取 XML 文件并解析为 DOM 对象,然后求值org.w3c.dom.Document对象上的 xpath 并以StringNodeList的形式获取结果。

1. Java 求值 xml 文件上的 xpath

  1. 创建Document DOM 对象javax.xml.parsers.DocumentBuilder对象。
  2. XPathFactory创建XPath
  3. 使用xpath.evaluate('expression', dom, resultType)获取结果 HTML。
package com.howtodoinjava.demo;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;

public class XPathExample 
{
	public static void main(String[] args) throws Exception 
	{

		String xmlFile = "employees.xml";

		//Get DOM
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document xml = db.parse(xmlFile);

        //Get XPath 
        XPathFactory xpf = XPathFactory.newInstance();
        XPath xpath = xpf.newXPath();

        //Get first match
        String name = (String) xpath.evaluate("/employees/employee/firstName", xml, XPathConstants.STRING);

        System.out.println(name);	//Lokesh

        //Get all matches
        NodeList nodes = (NodeList) xpath.evaluate("/employees/employee/@id", xml, XPathConstants.NODESET);

        for (int i = 0; i < nodes.getLength(); i++) {
        	System.out.println(nodes.item(i).getNodeValue());	//1 2
        }
    }
}    

程序输出:

Lokesh
1
2

2. XML 文件

输入的 xml 文件为:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<employees>
    <employee id="1">
        <firstName>Lokesh</firstName>
        <lastName>Gupta</lastName>
        <department>
            <id>101</id>
            <name>IT</name>
        </department>
    </employee>
    <employee id="2">
        <firstName>Brian</firstName>
        <lastName>Schultz</lastName>
        <department>
            <id>102</id>
            <name>HR</name>
        </department>
    </employee>
</employees>

学习愉快!

阅读更多:

字符串中的 Java xpath 示例

Java xpath 教程

如何在 Java 中使用 xpath 获取 xml 中的属性值