/*---------------- FILE HEADER --------------------------------------- This file is part of Geoide. Copyright (C) 2005-2006 by: IDgis B.V. http://www.idgis.nl This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Contact: Herman Assink IDgis bv P.O. Box 15 7450 AA Holten The Netherlands E-Mail: herman.assink@idgis.nl * @version 1.4.0 * @author IDgis team * ------------------------------------------------------------------------*/ class nl.idgis.giclient.util.XMLTools { static function getChild(name:String, xmlNode:XMLNode):XMLNode { for (var i:Number = 0; xmlNode.childNodes[i] != null; i++) { if (xmlNode.childNodes[i].nodeName.toUpperCase() == name.toUpperCase()) { return xmlNode.childNodes[i]; } } return null; } static function getChildNS(localName:String, nsURI:String, xmlNode:XMLNode):XMLNode { for (var i:Number = 0; xmlNode.childNodes[i] != null; i++) { if (xmlNode.childNodes[i].localName.toUpperCase() == localName.toUpperCase() && xmlNode.childNodes[i].namespaceURI == nsURI) { return xmlNode.childNodes[i]; } } return null; } static function getChildNodes(name:String, xmlNode:XMLNode):Array { var array:Array = new Array(); for (var i:Number = 0; xmlNode.childNodes[i] != null; i++) { if (xmlNode.childNodes[i].nodeName == name) { array.push(xmlNode.childNodes[i]); } } return array; } /* * this method does not ignore namepsaces. * the returned array contains all child nodes, where localName and nsURI match the passed arguments. */ static function getChildNodesNS(localName:String, nsURI:String, xmlNode:XMLNode):Array { var array:Array = new Array(); for (var i:Number = 0; xmlNode.childNodes[i] != null; i++) { if (xmlNode.childNodes[i].localName == localName && xmlNode.childNodes[i].namespaceURI == nsURI) { array.push(xmlNode.childNodes[i]); } } return array; } static function getStringValue(name:String, xmlNode:XMLNode):String { var valueNode:XMLNode = getChild(name, xmlNode); var string:String = null; if (valueNode.firstChild == null) { if (xmlNode.attributes[name] != null) { string = xmlNode.attributes[name]; } else { string = null; } } else { string = valueNode.firstChild.nodeValue; } return string; } static function getStringValues(name:String, xmlNode:XMLNode):Array { var subNodes:Array = getChildNodes(name, xmlNode); var stringValues:Array = new Array(); for (var i:Number = 0; i < subNodes.length; i++) { stringValues.push(subNodes[i].firstChild.nodeValue); } return stringValues; } static function getNumberValue(name:String, xmlNode:XMLNode):Number { var valueNode:XMLNode = getChild(name, xmlNode); var number:Number = -1; if (valueNode.firstChild == null) { if (xmlNode.attributes[name] != null) { number = Number(xmlNode.attributes[name]); } } else { number = Number(valueNode.firstChild.nodeValue); } return number; } static function getNumberValues(name:String, xmlNode:XMLNode):Array { var subNodes:Array = getChildNodes(name, xmlNode); var numberValues:Array = new Array(); for (var i:Number = 0; i < subNodes.length; i++) { numberValues.push(Number(subNodes[i].firstChild.nodeValue)); } return numberValues; } static function getBooleanValue(name:String, xmlNode:XMLNode):Boolean { var valueNode:XMLNode = getChild(name, xmlNode); var string:String = null; if (valueNode.firstChild == null) { string = xmlNode.attributes[name]; } else { string = valueNode.firstChild.nodeValue; } if ((string != null) && (string.toUpperCase() == "TRUE")) { return true; } else { return false; } return null; } }