Mega Code Archive

 
Categories / Java Tutorial / XML
 

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((Element) elementList.item(i), attribute).equals(value)) {         resultList.add(elementList.item(i));         if (returnFirst) {           break;         }       }     }     return resultList;   } }