Java XML Child Node Get getChildNodeGentle(Node node, String namespace, String localname)

Here you can find the source of getChildNodeGentle(Node node, String namespace, String localname)

Description

Gets specified child node from the specified node.
If there are several nodes which have same name, the node which was appeared at 1st will be returned.
This methods will not throw any Exception.

License

Apache License

Parameter

Parameter Description
node the specified node.
name a name of the child node.

Return

the child node when it is found, null otherwise.

Declaration

public static Node getChildNodeGentle(Node node, String namespace, String localname) 

Method Source Code

//package com.java2s;
/*/*from  ww w.  jav a2  s  . com*/
 * $RCSfile: XMLUtil.java,v $ $Revision: 1.5 $ $Date: 2007/11/27 02:27:42 $
 * $AIST_Release: 5.0.0 $
 * $AIST_Copyright:
 *  Copyright 2003, 2004, 2005, 2006 Grid Technology Research Center,
 *  National Institute of Advanced Industrial Science and Technology
 *  Copyright 2003, 2004, 2005, 2006 National Institute of Informatics
 *  
 *  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.NodeList;

public class Main {
    /**
     * Gets specified child node from the specified node.<br>
     * If there are several nodes which have same name,
     * the node which was appeared at 1st will be returned.<br>
     * This methods will not throw any Exception.
     * 
     * @param node the specified node.
     * @param name a name of the child node.
     * @return the child node when it is found, null otherwise.
     */
    public static Node getChildNodeGentle(Node node, String namespace, String localname) {
        int count = 0;
        NodeList list = node.getChildNodes();
        for (int i = 0; i < list.getLength(); i++) {
            Node tmp = list.item(i);
            if (nodeIsElementOf(tmp, namespace, localname)) {
                return tmp;
            }
        }
        return null;
    }

    /**
     * Node is element whose namespace is "namespace" and localname is "localname"?
     * 
     * @param node XML node.
     * @param namespace Namespace
     * @param localname Local name
     * @return Node is element whose namespace is "namespace" and localname is "localname"?
     */
    public static boolean nodeIsElementOf(Node node, String namespace, String localname) {

        if (node.getNodeType() != Node.ELEMENT_NODE) {
            return false;
        }
        String ns = node.getNamespaceURI();

        if (((ns != null) && (namespace != null) && (ns.equals(namespace)))
                || ((ns == null) && (namespace == null))) {
        } else {
            return false;
        }

        String ln = node.getLocalName();
        if (!ln.equals(localname)) {
            return false;
        }
        return true;
    }
}

Related

  1. getChildNodeByName(Node element, CharSequence nodeName, boolean caseSensitive)
  2. getChildNodeByName(Node node, String childName)
  3. getChildNodeByName(Node node, String name)
  4. getChildNodeByTagName(Node node, String name)
  5. getChildNodeByType(Element element, short nodeType)
  6. getChildNodeListByTagName(Element parent, String tagName)
  7. getChildNodes(Element ele)
  8. getChildNodes(final Node node)
  9. getChildNodes(final Node node, final short nodetype)