View Javadoc

1   /*
2    * $Id: DOMCategory.java,v 1.1 2004/04/27 02:25:29 spullara Exp $version Apr 25, 2004 5:18:30 PM $user Exp $
3    * 
4    * Copyright 2003 (C) Sam Pullara. All Rights Reserved.
5    * 
6    * Redistribution and use of this software and associated documentation
7    * ("Software"), with or without modification, are permitted provided that the
8    * following conditions are met: 1. Redistributions of source code must retain
9    * copyright statements and notices. Redistributions must also contain a copy of
10   * this document. 2. Redistributions in binary form must reproduce the above
11   * copyright notice, this list of conditions and the following disclaimer in the
12   * documentation and/or other materials provided with the distribution. 3. The
13   * name "groovy" must not be used to endorse or promote products derived from
14   * this Software without prior written permission of The Codehaus. For written
15   * permission, please contact info@codehaus.org. 4. Products derived from this
16   * Software may not be called "groovy" nor may "groovy" appear in their names
17   * without prior written permission of The Codehaus. "groovy" is a registered
18   * trademark of The Codehaus. 5. Due credit should be given to The Codehaus -
19   * http://groovy.codehaus.org/
20   * 
21   * THIS SOFTWARE IS PROVIDED BY THE CODEHAUS AND CONTRIBUTORS ``AS IS'' AND ANY
22   * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
23   * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24   * DISCLAIMED. IN NO EVENT SHALL THE CODEHAUS OR ITS CONTRIBUTORS BE LIABLE FOR
25   * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31   *  
32   */
33  package groovy.xml.dom;
34  
35  import org.w3c.dom.Element;
36  import org.w3c.dom.NodeList;
37  
38  /***
39   * @author sam
40   */
41  public class DOMCategory {
42  
43      public static Object get(Element element, String elementName) {
44          return getAt(element, elementName);
45      }
46      
47      public static Object getAt(Element element, int i) {
48          if (element.hasChildNodes()) {
49              NodeList nodeList = element.getChildNodes();
50          		return nodeList.item(i);
51          }
52          return null;
53      }
54      
55      public static Object getAt(Element element, String elementName) {
56          if (elementName.startsWith("@")) {
57              String attrName = elementName.substring(1);
58              	return element.getAttribute(attrName);
59          }
60          if (element.hasChildNodes()) {
61              NodeList nodeList = element.getChildNodes();
62              for (int i = 0; i < nodeList.getLength(); i++) {
63                  Object node = nodeList.item(i);
64                  if (node instanceof Element) {
65                      Element child = (Element) node;
66                      child.hasChildNodes();
67                      if(child.getTagName().equals(elementName)) {
68                          return child;
69                      }
70                  }
71              }
72          }
73          return null;
74      }
75  
76  }