Java XML Node Next getNext(Node node)

Here you can find the source of getNext(Node node)

Description

Get the next node in a depth first preorder traversal.

License

Open Source License

Parameter

Parameter Description
node the current node

Return

the next node in the preorder traversal

Declaration

public static Node getNext(Node node) 

Method Source Code


//package com.java2s;
/*//from ww w  .j  a  v  a2s.  co  m
 * Copyright (c) 1998-2010 Caucho Technology -- all rights reserved
 * Copyright (c) 2011-2012 Clever Cloud SAS -- all rights reserved
 *
 * This file is part of Bianca(R) Open Source
 *
 * Each copy or derived work must preserve the copyright notice and this
 * notice unmodified.
 *
 * Bianca Open Source is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * Bianca Open Source is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
 * of NON-INFRINGEMENT.  See the GNU General Public License for more
 * details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Bianca Open Source; if not, write to the
 *   Free SoftwareFoundation, Inc.
 *   59 Temple Place, Suite 330
 *   Boston, MA 02111-1307  USA
 *
 * @author Scott Ferguson
 */

import org.w3c.dom.*;

public class Main {
    /**
     * Get the next node in a depth first preorder traversal.
     * <p/>
     * <ul>
     * <li>If the node has a child, return the child
     * <li>Else if the node has a following sibling, return that sibling
     * <li>Else if the node has a following uncle, return that uncle
     * </ul>
     *
     * @param node the current node
     * @return the next node in the preorder traversal
     */
    public static Node getNext(Node node) {
        if (node == null)
            return null;

        if (node.getFirstChild() != null)
            return node.getFirstChild();

        for (; node != null; node = node.getParentNode()) {
            if (node.getNextSibling() != null)
                return node.getNextSibling();
        }

        return null;
    }
}

Related

  1. getNext(final Node current, final boolean sameName)
  2. getNext(Node current)
  3. getNext(Node current, String name, int type)
  4. getNextComment(Node element)
  5. getNextComment(Node element)
  6. getNextElement(Node el)
  7. getNextElement(Node node)