Java XML Child Get getChildElements(final Element element, final String namespace, final String tagName)

Here you can find the source of getChildElements(final Element element, final String namespace, final String tagName)

Description

Obtains the list of child elements with the specified tag name inside the specific namespace.

License

Open Source License

Parameter

Parameter Description
element the root element.
namespace the child namespace name.
tagName the child tag name.

Return

the child element list.

Declaration

public static List<Element> getChildElements(final Element element, final String namespace,
        final String tagName) 

Method Source Code

//package com.java2s;
/*/*from  w  w  w .  ja va 2s.c  om*/
 * JaspertReports JSF Plugin Copyright (C) 2011 A. Alonso Dominguez
 *
 * This library is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; either version 2.1 of the License, or (at
 * your option) any later version. This library 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.
 *
 * See the GNU Lesser General Public License for more details. You should have
 * received a copy of the GNU Lesser General Public License along with this
 * library; if not, write to the Free Software Foundation, Inc., 59 Temple
 * Place, Suite 330, Boston, MA 02111-1307 USA A.
 *
 * Alonso Dominguez
 * alonsoft@users.sf.net
 */

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 {
    /**
     * Obtains the list of child elements with the specified tag name.
     *
     * @param element the root element.
     * @param tagName the child tag element name.
     * @return the child element list.
     */
    public static List<Element> getChildElements(final Element element, final String tagName) {
        return getChildElements(element, null, tagName);
    }

    /**
     * Obtains the list of child elements with the specified tag name
     * inside the specific namespace.
     *
     * @param element the root element.
     * @param namespace the child namespace name.
     * @param tagName the child tag name.
     * @return the child element list.
     */
    public static List<Element> getChildElements(final Element element, final String namespace,
            final String tagName) {
        final List<Element> elements = getElementList(element);
        final int numElements = elements.size();
        final List<Element> childElements = new ArrayList<Element>();
        for (int i = 0; i < numElements; i++) {
            final Element childElement = elements.get(i);
            String childTagName = childElement.getTagName();
            final String childPrefix = childElement.getPrefix();
            final String childNamespace = (childPrefix != null ? childElement.lookupNamespaceURI(childPrefix)
                    : null);

            if (namespace != null) {
                if (!namespace.equals(childNamespace)) {
                    continue;
                } else {
                    childTagName = childElement.getLocalName();
                }
            }

            if (!childTagName.equals(tagName)) {
                continue;
            }
            childElements.add(childElement);
        }
        return childElements;
    }

    /**
     * Obtains the list of child element nodes.
     *
     * @param element the root element.
     * @return the list of child elements.
     */
    private static List<Element> getElementList(final Element element) {
        final List<Element> elementList = new ArrayList<Element>();

        final NodeList childNodes = element.getChildNodes();
        final int numChildren = childNodes.getLength();

        for (int i = 0; i < numChildren; i++) {
            final Node childNode = childNodes.item(i);
            if (childNode.getNodeType() != Node.ELEMENT_NODE) {
                continue;
            }
            elementList.add((Element) childNode);
        }

        return elementList;
    }
}

Related

  1. getChildElements(Element parentNode)
  2. getChildElements(Element root, String name, boolean mandatory)
  3. getChildElements(final Element elem)
  4. getChildElements(final Element element)
  5. getChildElements(final Element element, final String localName)
  6. getChildElements(final Element elm)