01: package com.meterware.servletunit;
02:
03: /********************************************************************************************************************
04: * $Id: XMLUtils.java,v 1.1 2004/02/26 17:36:47 russgold Exp $
05: *
06: * Copyright (c) 2004, Russell Gold
07: *
08: * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
09: * documentation files (the "Software"), to deal in the Software without restriction, including without limitation
10: * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and
11: * to permit persons to whom the Software is furnished to do so, subject to the following conditions:
12: *
13: * The above copyright notice and this permission notice shall be included in all copies or substantial portions
14: * of the Software.
15: *
16: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
17: * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18: * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
19: * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20: * DEALINGS IN THE SOFTWARE.
21: *
22: *******************************************************************************************************************/
23:
24: import org.w3c.dom.Element;
25: import org.w3c.dom.NodeList;
26: import org.w3c.dom.Node;
27: import org.xml.sax.SAXException;
28:
29: import java.util.ArrayList;
30:
31: /**
32: *
33: * @author <a href="mailto:russgold@httpunit.org">Russell Gold</a>
34: **/
35: abstract class XMLUtils {
36:
37: static String getChildNodeValue(Element root, String childNodeName)
38: throws SAXException {
39: return getChildNodeValue(root, childNodeName, null);
40: }
41:
42: static String getChildNodeValue(Element root, String childNodeName,
43: String defaultValue) throws SAXException {
44: NodeList nl = root.getElementsByTagName(childNodeName);
45: if (nl.getLength() == 1) {
46: return getTextValue(nl.item(0)).trim();
47: } else if (defaultValue == null) {
48: throw new SAXException("Node <" + root.getNodeName()
49: + "> has no child named <" + childNodeName + ">");
50: } else {
51: return defaultValue;
52: }
53: }
54:
55: static String getTextValue(Node node) throws SAXException {
56: Node textNode = node.getFirstChild();
57: if (textNode == null)
58: return "";
59: if (textNode.getNodeType() != Node.TEXT_NODE)
60: throw new SAXException("No text value found for <"
61: + node.getNodeName() + "> node");
62: return textNode.getNodeValue();
63: }
64:
65: static boolean hasChildNode(Element root, String childNodeName) {
66: NodeList nl = root.getElementsByTagName(childNodeName);
67: return (nl.getLength() > 0);
68: }
69:
70: }
|