使用DOM与XPATH解析一个Document对象的一般过程

来源:互联网 发布:东莞淘宝托管公司 编辑:程序博客网 时间:2024/05/14 04:40

使用DOM与XPATH解析一个Document对象的一般过程:

DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();

factory.setNamespaceAware(true); // never forgetthis!

DocumentBuilder builder =factory.newDocumentBuilder();

Document doc =builder.parse("books.xml");

到目前为止,这仅仅是标准的 JAXP 和 DOM,没有什么新鲜的。接下来创建 XPathFactory:

XPathFactory factory =XPathFactory.newInstance();

然后使用这个工厂创建 XPath 对象:

XPath xpath = factory.newXPath();

XPath 对象编译 XPath 表达式:

PathExpression expr =

xpath.compile("//book[author='NealStephenson']/title/text()");

直接求值

如果 XPath 表达式只使用一次,可以跳过编译步骤直接对XPath 对象静态调用 evaluate() 方法。但是,如果同一个表达式要重复使用多次,编译可能更快一些。

最后,计算 XPath 表达式得到结果。表达式是针对特定的上下文节点计算的,在这个例子中是整个文档。还必须指定返回类型。这里要求返回一个节点集:

Object result = expr.evaluate(doc,XPathConstants.NODESET);

可以将结果强制转化成 DOM NodeList,然后遍历列表得到所有的标题:

NodeList nodes = (NodeList) result;

for (int i = 0; i < nodes.getLength();i++)  {

   System.out.println(nodes.item(i);

}
0 0