|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 上一个软件包 下一个软件包 | 框架 无框架 | |||||||||
请参见:
描述
| 接口摘要 | |
|---|---|
| XPath | XPath 提供了对 XPath 计算环境和表达式的访问。 |
| XPathExpression | XPathExpression 提供了对编译后的 XPath 表达式的访问。 |
| XPathFunction | XPathFunction 提供了对 XPath 函数的访问。 |
| XPathFunctionResolver | XPathFunctionResolver 提供了对用户定义的 XPathFunction 集的访问。 |
| XPathVariableResolver | XPathVariableResolver 提供了对用户定义的 XPath 变量集的访问。 |
| 类摘要 | |
|---|---|
| XPathConstants | XPath 常量。 |
| XPathFactory | XPathFactory 实例可用于创建 XPath 对象。 |
| 异常摘要 | |
|---|---|
| XPathException | XPathException 表示一般的 XPath 异常。 |
| XPathExpressionException | XPathExpressionException 表示 XPath 表达式中的错误。 |
| XPathFactoryConfigurationException | XPathFactoryConfigurationException 表示 XPathFactory 环境中的配置错误。 |
| XPathFunctionException | XPathFunctionException 表示 XPath 函数的错误。 |
此包提供了用于 XPath 表达式的计算和访问计算环境的 object-model neutral API。
应用以下 XML 标准:
XPath 语言提供了用于从 XML 文档选择节点的简单、简洁的语法。XPath 还提供了将 XML 文档对象模型(DOM)树中的节点转换为布尔值、double 值或字符串值的规则。XPath 是 W3C 定义的语言和正式的 W3C 推荐,W3C 拥有 XML Path Language (XPath) Version 1.0 规范。
XPath 诞生于 1999 年,作为对 XSLT 和 XPointer 语言的补充,但近来已成为流行的独立语言,因为单个 XPath 表达式可用于替代多行 DOM API 代码。
XPath 表达式 由一个位置路径 和一个或多个可选的谓词 组成。表达式还可以包含 XPath 变量。
以下是一个简单的 XPath 表达式的示例:
/foo/bar
此示例将选择如下所示的 XML 文档中的 <bar> 元素:
<foo> <bar/> </foo>
表达式 /foo/bar 是位置路径的一个示例。虽然 XPath 位置路径类似于 Unix-style 文件系统路径,但它们存在重要的区别,即 XPath 表达式返回与表达式匹配的所有 节点。因此,/foo/bar 表达式将选中以下文档中的所有三种 <bar> 元素:
<foo> <bar/> <bar/> <bar/> </foo>
特殊位置路径操作符 // 选择位于 XML 文档中任何深度的节点。以下示例选择所有 <bar> 元素,不管它们在文档中处于什么位置:
//bar
通配符 * 用于选择所有元素节点。以下示例选择 <foo> 元素的所有子元素:
/foo/*
除元素节点外,XPath 位置路径还可用于寻找属性节点、文本节点、注释节点和指令处理节点。下表给出了每种节点类型的位置路径的示例:
| 位置路径 | 描述 |
/foo/bar/@id
|
选择 <bar> 元素的属性 id
|
/foo/bar/text()
|
选择 <bar> 元素的文本节点。转义和非转义字符数据之间没有区别。
|
/foo/bar/comment()
|
选择 <bar> 元素中包含的所有注释节点。
|
/foo/bar/processing-instruction()
|
选择 <bar> 元素中包含的所有指令处理节点。
|
谓词允许修改 XPath 位置路径所选中的节点。谓词的形式为 [expression]。以下示例选择包含值为 true 的 include 属性的所有 <foo> 元素:
//foo[@include='true']
谓词可互相追加以进一步修改表达式,例如:
//foo[@include='true'][@mode='bar']
以下示例演示了使用 XPath API 来选择一个或多个来自 XML 文档的节点:
XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "/widgets/widget";
InputSource inputSource = new InputSource("widgets.xml");
NodeSet nodes = (NodeSet) xpath.evaluate(expression, inputSource, XPathConstants.NODESET);
虽然 XPath 表达式选择的是 XML 文档的节点,但 XPath API 允许将选中的节点组合到以下其他数据类型中:
布尔值数字字符串用于计算表示式的方法调用中的 QName 参数指定了所需的返回类型,其中方法调用要么是调用 XPathExpression.evalute(...),要么是调用 XPath.evaluate(...) 便捷方法之一。允许的 QName 值指定为 XPathConstants 类中的常量,它们是:
XPathConstants.NODESETXPathConstants.NODEXPathConstants.STRINGXPathConstants.BOOLEANXPathConstants.NUMBER当请求 Boolean 返回类型时,如果选中了一个或多个节点,则返回 Boolean.TRUE,否则返回 Boolean.FALSE。
String 返回类型是从文本节点、注释节点或指令处理节点检索字符数据的便捷方法。当用于元素节点上时,返回子文本节点的值。
Number 返回类型尝试将节点的文本组合到 double 数据类型。
XPath 位置路径可以相对于文档中的特殊节点,称为 context。考虑以下 XML 文档:
<widgets> <widget> <manufacturer/> <dimensions/> </widget> </widgets>
可以通过以下 XPath API 代码选择 <widget> 元素:
// parse the XML as a W3C Document
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = builder.parse(new File("/widgets.xml"));
XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "/widgets/widget";
Node widgetNode = (Node) xpath.evaluate(expression, document, XPathConstants.NODE);
通过引用 <widget> 元素,现在可以编写相对 XPath 表达式来选择 <manufacturer> 子元素:
XPath xpath = XPathFactory.newInstance().newXPath(); String expression = "manufacturer"; Node manufacturerNode = (Node) xpath.evaluate(expression, widgetNode, XPathConstants.NODE);
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 上一个软件包 下一个软件包 | 框架 无框架 | |||||||||
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。