Java XML Attribute Get getAttributeFromClosestAncestorOfAnyKind(Node node, String attributeName)

Here you can find the source of getAttributeFromClosestAncestorOfAnyKind(Node node, String attributeName)

Description

Climb through node's ancestors, looking for one with an attribute named attributeName, irrespective of the respective ancestorName, and return the attribute's value

License

Open Source License

Parameter

Parameter Description
node node
attributeName attributeName

Return

value of attribute from closest ancestor with that attribute, or the empty string if no ancestor has that attribute.

Declaration

public static String getAttributeFromClosestAncestorOfAnyKind(Node node, String attributeName) 

Method Source Code

//package com.java2s;
/**//from  www. j a  va  2 s. c o m
 * Copyright 2000-2006 DFKI GmbH.
 * All Rights Reserved.  Use is subject to license terms.
 *
 * This file is part of MARY TTS.
 *
 * MARY TTS 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, version 3 of the License.
 *
 * This program 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 program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

import org.w3c.dom.Element;

import org.w3c.dom.Node;

public class Main {
    /**
     * Climb through <code>node</code>'s ancestors, looking for one with an attribute named <code>attributeName</code>,
     * irrespective of the respective <code>ancestorName</code>, and return the attribute's value
     * 
     * @param node
     *            node
     * @param attributeName
     *            attributeName
     * @return value of attribute from closest ancestor with that attribute, or the empty string if no ancestor has that
     *         attribute.
     * 
     */
    public static String getAttributeFromClosestAncestorOfAnyKind(Node node, String attributeName) {
        Node parentNode;
        while (node != null && (parentNode = node.getParentNode()) != null) {
            if (parentNode.hasAttributes()) {
                Element parentElement = (Element) parentNode;
                if (parentElement.hasAttribute(attributeName)) {
                    return parentElement.getAttribute(attributeName);
                }
            }
            node = parentNode;
        }
        return "";
    }
}

Related

  1. getAttributeByName(Node node, String name, boolean defaultValue)
  2. getAttributeByName(Node node, String name, String defaultValue)
  3. getAttributeContent(Node item, String attributeName)
  4. getAttributeEnum(Node node, String attributeName, Class enumClass)
  5. getAttributeFloatValue(String attribute, NamedNodeMap namedNodeMap)
  6. getAttributeIfExists(Node node, String name)
  7. getAttributeIgnoreCase(Element element, String attributeName)
  8. getAttributeIgnoreCase(Element element, String string)
  9. getAttributeIntArray(final Node node, final String attribname)