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 }