1

我有一个由解析器解析的Node theFinalNode来自一个,我有另一个来自完全相同页面的文档,它以不同的方式解析,我想使用 找到另一个文档中的节点,所以我尝试制作这个代码:Documentsax2domXpath

     private Node node;
 Node theFinalNode;
............

Document document = builder.parse(someURL);
 XPath xpath = XPathFactory.newInstance().newXPath();
 node =  xpath.evaluate(document,theFinalNode, XPathConstants.NODE);

但似乎没有适合我上面提到的方式的构造函数。有什么解决办法吗?

错误

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: javax.xml.xpath.XPath.evaluate

编辑:

i changed last line into:`     node =  (Node) xpath.evaluate("//" + theFinalNode.getNodeName(),document, XPathConstants.NODE);

现在错误是:

Caused by: javax.xml.transform.TransformerException: A location step was expected following the '/' or '//' token.
4

1 回答 1

0

您在XPath.evaluate()中使用的参数存在问题

第一个参数必须是 xpath 表达式(字符串),第二个是上下文,最后一个是返回类型。因此,您可以将 xpath 表达式作为第一个参数来检测您的节点(即。"//" + theFinalNode.getNodeName()),并将您要在其中搜索节点的 Document 作为第二个参数。

于 2012-05-03T07:44:07.397 回答