Java XML Child Get by Name getChildElement(Element parent, String name)

Here you can find the source of getChildElement(Element parent, String name)

Description

Gets the child Element with the indicated name.

License

Apache License

Parameter

Parameter Description
parent Parent Element to start search from.
name Name to search for in child.

Return

The child Element with the indicated name, or null if the Element could not be found.

Declaration

public static Element getChildElement(Element parent, String name) 

Method Source Code

//package com.java2s;
/*/*  w  w w  .j  av  a2  s.  c  om*/
 *  Copyright 2006-2015 WebPKI.org (http://webpki.org).
 *
 *  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.Node;
import org.w3c.dom.Element;

public class Main {
    /**
     * Gets the child Element with the indicated name. The child
     * searched for must exist one level below the parent, i.e. a real 
     * parent-child relation.
     * 
     * @param parent Parent Element to start search from.
     * @param name Name to search for in child.
     * @return The child Element with the indicated name, or null
     * if the Element could not be found.
     */
    public static Element getChildElement(Element parent, String name) {
        Element elem;

        if ((elem = firstChildElement(parent)) == null) {
            return null;
        }

        /* Check first child. */
        if (elem.getNodeName().equals(name)) {
            return elem;
        }

        /* Loop the rest. */
        while ((elem = nextSiblingElement(elem)) != null) {
            if (elem.getNodeName().equals(name)) {
                return elem;
            }
        }

        return null;
    }

    /**
     * Get the first child {@link org.w3c.dom.Element Element} of an {@link org.w3c.dom.Element Element}.
     * <p>{@link org.w3c.dom.Node Nodes} other than {@link org.w3c.dom.Element Elements} are ignored.
     * @param parent Parent
     * @return The first child {@link org.w3c.dom.Element Element} or null if none exists.
     */
    public static Element firstChildElement(Element parent) {
        Node n = parent.getFirstChild();

        if (n == null || n instanceof Element) {
            return (Element) n;
        } else {
            return nextSiblingElement(n);
        }
    }

    /**
     * Get the next sibling {@link org.w3c.dom.Element Element} of a {@link org.w3c.dom.Node Node}.
     * <p>{@link org.w3c.dom.Node Nodes} other than {@link org.w3c.dom.Element Elements} are ignored.
     * @param n Node
     * @return The first child {@link org.w3c.dom.Element Element} or null if none exists.
     */
    public static Element nextSiblingElement(Node n) {
        do {
            if ((n = n.getNextSibling()) == null) {
                return null;
            }
        } while (!(n instanceof Element));

        return (Element) n;
    }
}

Related

  1. getChildElement(Element element, String tagName)
  2. getChildElement(Element parent, String childName)
  3. getChildElement(Element parent, String childName)
  4. getChildElement(Element parent, String element)
  5. getChildElement(Element parent, String name)
  6. getChildElement(Element parent, String name)
  7. getChildElement(Element parent, String tagName)
  8. getChildElement(Element parent, String tagName)
  9. getChildElement(Element parent, String tagName)