Java XML Child Get by Name getChildElement(final Element element, final String namespace, final String tagName)

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

Description

Obtains the first child element with the specified name inside the specified namespace.

License

Open Source License

Parameter

Parameter Description
element the root element.
namespace the namespace of the child element.
tagName the child local name.

Return

the child element.

Declaration

public static Element getChildElement(final Element element, final String namespace, final String tagName) 

Method Source Code

//package com.java2s;
/*//  w  ww. jav  a2  s  . c o m
 * 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 org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Main {
    /**
     * Obtains the first child element with the specified name.
     *
     * @param element root element.
     * @param tagName the child tag name.
     * @return the child element or null if not found.
     */
    public static Element getChildElement(final Element element, final String tagName) {
        return getChildElement(element, null, tagName);
    }

    /**
     * Obtains the first child element with the specified name inside
     * the specified namespace.
     *
     * @param element the root element.
     * @param namespace the namespace of the child element.
     * @param tagName the child local name.
     * @return the child element.
     */
    public static Element getChildElement(final Element element, final String namespace, final String tagName) {
        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;
            }

            final Element childElement = (Element) childNode;
            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;
            }
            return childElement;
        }
        return null;
    }
}

Related

  1. getChildElement(Element parentElement, String childElementName)
  2. getChildElement(Element parentElement, String name)
  3. getChildElement(Element parentElement, String tagName)
  4. getChildElement(Element root, String name)
  5. getChildElement(Element root, String name, boolean mandatory)
  6. getChildElement(final Element parent, final String childName)
  7. getChildElement(final Element parent, final String ns, final String localName)
  8. getChildElement(final Node parent, final String name)
  9. getChildElement(final Node parentNode, final String childNodeName)