Saturday 6 August 2011

Return a list of named Elements with a specific attribute value.

  
/**********************************************************************************
*
* Copyright (c) 2003, 2004 The Regents of the University of Michigan, Trustees of Indiana University,
*                  Board of Trustees of the Leland Stanford, Jr., University, and The MIT Corporation
*
* Licensed under the Educational Community License Version 1.0 (the "License");
* By obtaining, using and/or copying this Original Work, you agree that you have read,
* understand, and will comply with the terms and conditions of the Educational Community License.
* You may obtain a copy of the License at:
*
*      http://cvs.sakaiproject.org/licenses/license_1_0.html
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
* AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
**********************************************************************************/


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 Utils {
  /**
   * Get an Attribute from an Element.  Returns an empty String if none found
   @param element the containing Element
   @param name the attribute name
   @return Attribute as a String
   */
  public static String getAttribute(Element element, String name) {
    return element.getAttribute(name);
  }
  /**
   * Return a list of named Elements with a specific attribute value.
   @param element the containing Element
   @param name the tag name
   @param attribute Attribute name
   @param value Attribute value
   @param returnFirst Return only the first matching value?
   @return List of matching elements
   */
  public static List selectElementsByAttributeValue(Element element, String name,
                                                    String attribute, String value,
                                                    boolean returnFirst) {
    NodeList  elementList = element.getElementsByTagName(name);
    List      resultList  = new ArrayList();

    for (int i = 0; i < elementList.getLength(); i++) {
      if (getAttribute((ElementelementList.item(i), attribute).equals(value)) {
        resultList.add(elementList.item(i));
        if (returnFirst) {
          break;
        }
      }
    }
    return resultList;
  }
}

   
    
  

No comments:

Post a Comment