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

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

Description

get Child Element

License

Open Source License

Declaration

public static Element getChildElement(Element parent, String name) 

Method Source Code

//package com.java2s;
//License from project: GNU General Public License 

import java.util.ArrayList;
import java.util.List;

import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Main {
    public static Element getChildElement(Element parent, String name) {
        return getChildElement(parent, name, false);
    }/*  w  w  w.  j a  va2 s.co m*/

    public static Element getChildElement(Element parent, String name, boolean strict) {
        List<Element> childElements = getChildElements(parent, name);
        if (strict && childElements.size() != 1) {
            throw new IllegalArgumentException("parent must contain exactly one element with the given name");
        }

        return childElements.isEmpty() ? null : childElements.get(0);
    }

    /**
     * Convenience method for getting all child elements.
     * 
     * @see #getChildElements(Element, String)
     */
    public static List<Element> getChildElements(Element parent) {
        return getChildElements(parent, null);
    }

    /**
     * Gets the child elements of a parent element. Unlike DOM's getElementsByTagName, this does no recursion,
     * uses local name (namespace free) instead of tag name, result is a proper Java data structure and result
     * needs no casting. In other words, this method does not suck unlike DOM.
     * 
     * @param parent the XML parent element
     * @param name name of the child elements, if null then all are returned
     */
    public static List<Element> getChildElements(Element parent, String name) {
        List<Element> childElements = new ArrayList<Element>();
        NodeList childNodes = parent.getChildNodes();

        for (int i = 0; i < childNodes.getLength(); i++) {
            // get elements
            if (childNodes.item(i).getNodeType() == Node.ELEMENT_NODE) {

                // match element name
                Element childElement = (Element) childNodes.item(i);
                if (name == null || childElement.getLocalName().equals(name)) {
                    childElements.add(childElement);
                }
            }
        }

        return childElements;
    }
}

Related

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