如果子句在recursion函数中

我试图build立一个遍历Dom树的函数,当且仅当节点名称不等于scriptstyle 。 这里是function:

  public static void PostOrderTR(Node node) throws XPathExpressionException, MalformedURLException, SAXNotRecognizedException, SAXNotSupportedException, ParserConfigurationException, IOException, SAXException { if (node == null || node.getNodeName() == null) { return; } if(!"script".equals(node.getNodeName())||!"style".equals(node.getLocalName())|| !"style".equals(node.getNodeName())) { //do something PostOrderTR(node.getFirstChild()); } if(!"script".equals(node.getNodeName())||!"style".equals(node.getLocalName())|| !"style".equals(node.getNodeName())) PostOrderTR(node.getNextSibling()); } 

但在实践中,结果完全相反。 它遍历所有的节点,包括scriptstyle 。 我已经尝试用||replace&& 没有什么改变。

您的条件不起作用,因为所有节点名称不是“脚本”或不是“样式”,所以所有节点名称都通过。

正确的条件是:

 if(!("script".equals(node.getNodeName())||"style".equals(node.getLocalName())) 

这意味着节点名称既不是“脚本”也不是“风格”。