Here you can find the source of getLastVisibleChildElement(Node parent)
public static Element getLastVisibleChildElement(Node parent)
//package com.java2s; /*//from w ww . j a v a 2s .c o m * Copyright 1999-2002,2004,2005 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.util.Hashtable; import org.w3c.dom.Element; import org.w3c.dom.Node; public class Main { /** Finds and returns the last visible child element node. */ public static Element getLastVisibleChildElement(Node parent) { // search for node Node child = parent.getLastChild(); while (child != null) { if (child.getNodeType() == Node.ELEMENT_NODE && !isHidden(child)) { return (Element) child; } child = child.getPreviousSibling(); } // not found return null; } /** Finds and returns the last visible child element node. * Overload previous method for non-Xerces node impl */ public static Element getLastVisibleChildElement(Node parent, Hashtable hiddenNodes) { // search for node Node child = parent.getLastChild(); while (child != null) { if (child.getNodeType() == Node.ELEMENT_NODE && !isHidden(child, hiddenNodes)) { return (Element) child; } child = child.getPreviousSibling(); } // not found return null; } public static boolean isHidden(Node node) { if (node instanceof com.sun.org.apache.xerces.internal.impl.xs.opti.NodeImpl) return ((com.sun.org.apache.xerces.internal.impl.xs.opti.NodeImpl) node).getReadOnly(); else if (node instanceof com.sun.org.apache.xerces.internal.dom.NodeImpl) return ((com.sun.org.apache.xerces.internal.dom.NodeImpl) node).getReadOnly(); return false; } public static boolean isHidden(Node node, Hashtable hiddenNodes) { if (node instanceof com.sun.org.apache.xerces.internal.impl.xs.opti.NodeImpl) return ((com.sun.org.apache.xerces.internal.impl.xs.opti.NodeImpl) node).getReadOnly(); else if (node instanceof com.sun.org.apache.xerces.internal.dom.NodeImpl) return ((com.sun.org.apache.xerces.internal.dom.NodeImpl) node).getReadOnly(); else return hiddenNodes.containsKey(node); } }