昨天我问了一个问题here并得到了很好的回答。但是,我已采用示例代码并尝试打印出当前节点的值,即使用getNodeValue。
每当我运行jsp时,它返回“org.apache.jasper.JasperException:处理JSP页面时发生异常”错误“printOut = n.getNodeValue()。trim();”
以下是我编辑的dogbane代码
String = "tagToFind";
String printOut = "";
Node n = aNode.getParentNode();
while (n != null && !n.getNodeName().equals(tagToFind)) {
n = n.getParentNode();
printOut = n.getNodeValue();
}
out.println(printOut);
答案 0 :(得分:1)
可能是getNodeValue返回null,导致.trim()部分抛出NullPointerException。
getNodeValue为除文本,属性,注释,处理指令和CDATA之外的所有节点类型返回null。请注意,元素和文档为getNodeValue返回null。您正在走向节点树,因此您将非常快速地击中其中一个。
您可以通过在尝试修剪它之前检查空值来解决此问题。
答案 1 :(得分:0)
除了@ Cameron的答案,你应该知道循环逻辑中的一个缺陷。
首先将n
更改为指向父级,然后在其上使用getNodeValue()
。
但是n可能会从.getParentNode()
调用中变为空。
尝试交换它们..
printOut = n.getNodeValue();
n = n.getParentNode();