Java XML Node Parent isDescendantOrSelf(Node ctx, Node descendantOrSelf)

Here you can find the source of isDescendantOrSelf(Node ctx, Node descendantOrSelf)

Description

Returns true if the descendantOrSelf is on the descendant-or-self axis of the context node.

License

Apache License

Parameter

Parameter Description
ctx a parameter
descendantOrSelf a parameter

Return

true if the node is descendant

Declaration

static public boolean isDescendantOrSelf(Node ctx, Node descendantOrSelf) 

Method Source Code

//package com.java2s;
/*//ww  w  .ja v  a  2  s.c o m
 * Copyright  1999-2004 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 org.w3c.dom.Attr;

import org.w3c.dom.Node;

public class Main {
    /**
     * Returns true if the descendantOrSelf is on the descendant-or-self axis
     * of the context node.
     *
     * @param ctx
     * @param descendantOrSelf
     * @return true if the node is descendant
     */
    static public boolean isDescendantOrSelf(Node ctx, Node descendantOrSelf) {

        if (ctx == descendantOrSelf) {
            return true;
        }

        Node parent = descendantOrSelf;

        while (true) {
            if (parent == null) {
                return false;
            }

            if (parent == ctx) {
                return true;
            }

            if (parent.getNodeType() == Node.ATTRIBUTE_NODE) {
                parent = ((Attr) parent).getOwnerElement();
            } else {
                parent = parent.getParentNode();
            }
        }
    }
}

Related

  1. isAncestorOf(Node candidateAncestor, Node candidateSibling, boolean strict)
  2. isAncestorOf(Node node, Node descendant)
  3. isAnyNodeAncestorOf(ArrayList ancestorNodes, Node node)
  4. isDescendant(Node test, Node target)
  5. isDescendantOrSelf(Node ctx, Node descendantOrSelf)
  6. previousSiblingElement(Node node)
  7. resolveLeafNodeValue(Node node)