Here you can find the source of hasAttribute(Node node, String attributeName, String className)
public static boolean hasAttribute(Node node, String attributeName, String className)
//package com.java2s; /*/* ww w. j a v a 2s. c o m*/ * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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.NamedNodeMap; import org.w3c.dom.Node; public class Main { /** * Checks the presence of an attribute value in attributes that * contain whitespace-separated lists of values. The semantic is the * CSS classes' ones: "foo" matches "bar foo", "foo" but not "foob" */ public static boolean hasAttribute(Node node, String attributeName, String className) { // regex love, maybe faster but less easy to understand // Pattern pattern = Pattern.compile("(^|\\s+)"+className+"(\\s+|$)"); String attr = readAttribute(node, attributeName); for (String c : attr.split("\\s+")) if (c.equalsIgnoreCase(className)) return true; return false; } /** * Checks the presence of an attribute in the given <code>node</code>. * * @param node the node container. * @param attributeName the name of the attribute. */ public static boolean hasAttribute(Node node, String attributeName) { return readAttribute(node, attributeName, null) != null; } /** * Reads the value of the specified <code>attribute</code>, returning the * <code>defaultValue</code> string if not present. * * @param node node to read the attribute. * @param attribute attribute name. * @param defaultValue the default value to return if attribute is not found. * @return the attribute value or <code>defaultValue</code> if not found. */ public static String readAttribute(Node node, String attribute, String defaultValue) { NamedNodeMap attributes = node.getAttributes(); if (null == attributes) return defaultValue; Node attr = attributes.getNamedItem(attribute); if (null == attr) return defaultValue; return attr.getNodeValue(); } /** * Reads the value of an <code>attribute</code>, returning the * empty string if not present. * * @param node node to read the attribute. * @param attribute attribute name. * @return the attribute value or <code>""</code> if not found. */ public static String readAttribute(Node node, String attribute) { return readAttribute(node, attribute, ""); } }