📅  最后修改于: 2023-12-03 15:16:27.694000             🧑  作者: Mango
XML是一种常用的数据交换格式,经常在应用程序中使用。XPath是一种用于在XML文档中查找和选择信息的语言。Java中提供了自带的XPath引擎来实现XPath表达式的解析和查询。
XPath可以使用各种表达式来选择XML文档中的节点。以下是XPath的一些表达式示例:
//bookstore
: 选择根节点的所有bookstore子节点。/bookstore/book[1]
: 选择根节点bookstore的第一个子节点book。//book[price>35.00]
: 选择所有价格大于35.00的book节点。//book[@category='web']
: 选择所有category属性为web的book节点。具体的XPath语法可以参考W3School。
Java中的XPath评估器类为javax.xml.xpath.XPath
,通过此类可以对XML文档进行XPath表达式的解析和查询。
Package javax.xml.xpath;
public abstract class XPathFactory {
public static XPathFactory newInstance() {
return XPathFactory.newInstance(XPathFactory.DEFAULT_OBJECT_MODEL_URI);
}
public abstract XPath newXPath();
}
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
首先需要通过XPathFactory.newInstance()
方法创建一个XPath评估器工厂,然后通过factory.newXPath()
方法创建一个XPath评估器实例。
XPathExpression expr = xpath.compile(expression);
通过XPath评估器的compile()
方法可以将XPath表达式解析为XPath表达式对象XPathExpression
。
Object result = expr.evaluate(doc, returnType);
通过XPath表达式对象的evaluate()
方法,传入XML文档以及返回值类型,可以执行XPath表达式并返回结果。
下面是一个使用XPath评估器解析XML文档的示例程序:
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document doc = builder.parse("books.xml");
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
XPathExpression expr = xpath.compile("//book[price>35.00]/title/text()");
NodeList nodes = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
for (int i = 0; i < nodes.getLength(); i++) {
System.out.println(nodes.item(i).getNodeValue());
}
以上程序的作用是读取名为books.xml的XML文档并查询其中价格大于35.00的所有书籍的title节点,并输出结果。
通过Java中的XPath评估器,我们可以轻松地解析和查询XML文档中的信息。XPath的表达式语法丰富多样,使用灵活方便。我们需要熟练掌握XPath语法以及XPath评估器的使用,才能更好地处理XML数据。