2012-05-03 112 views
1

我有一个Node theFinalNode来自Document,它被sax2dom解析器解析,我从另一个文档从完全相同的页面以不同的方式解析,我想在其他文档中找到节点使用Xpath,所以我试图让这样的代码:使用Xpath在文档中查找节点

 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. 
+0

什么是你得到 – UVM

+0

错误@UNNI的Xpath.evaluate(...) – lonesome

+0

没有合适的构造请贴完整的错误 – UVM

回答

0

有一个在你XPath.evaluate()

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

+0

请看看我的编辑 – lonesome

+0

对不起,我认为节点是一个元素,你可以打印输出的thefinalNode.getNodeName()并指定类型?所以我们可以帮助你创建正确的xpath表达式 – Teg

+0

它的**#文本** ... – lonesome

相关问题