/******************************************************************************* * Copyright (c) 2013 Philip Collin. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html * * Contributors: * Philip Collin - initial API and implementation ******************************************************************************/ package com.lyeeedar.Roguelike3D.Game.Level.XML; import java.io.IOException; import java.io.Serializable; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import com.badlogic.gdx.Gdx; public abstract class XMLReader implements Serializable { /** * */ private static final long serialVersionUID = -6266299160669094961L; transient Document root_node; public XMLReader() { } public XMLReader(String file) { Document doc = null; try { DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); doc = dBuilder.parse(Gdx.files.internal(file).read()); } catch (IOException e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } root_node = doc; } protected Node getNode(String tagName, NodeList nodes) { for ( int x = 0; x < nodes.getLength(); x++ ) { Node node = nodes.item(x); if (node.getNodeName().equalsIgnoreCase(tagName)) { return node; } } return null; } protected String getNodeValue( Node node ) { NodeList childNodes = node.getChildNodes(); for (int x = 0; x < childNodes.getLength(); x++ ) { Node data = childNodes.item(x); if ( data.getNodeType() == Node.TEXT_NODE ) return data.getNodeValue(); } return ""; } protected String getNodeValue(String tagName, NodeList nodes ) { for ( int x = 0; x < nodes.getLength(); x++ ) { Node node = nodes.item(x); if (node.getNodeName().equalsIgnoreCase(tagName)) { NodeList childNodes = node.getChildNodes(); for (int y = 0; y < childNodes.getLength(); y++ ) { Node data = childNodes.item(y); if ( data.getNodeType() == Node.TEXT_NODE ) return data.getNodeValue(); } } } return ""; } protected String getNodeAttr(String attrName, Node node ) { NamedNodeMap attrs = node.getAttributes(); for (int y = 0; y < attrs.getLength(); y++ ) { Node attr = attrs.item(y); if (attr.getNodeName().equalsIgnoreCase(attrName)) { return attr.getNodeValue(); } } return ""; } protected String getNodeAttr(String tagName, String attrName, NodeList nodes ) { for ( int x = 0; x < nodes.getLength(); x++ ) { Node node = nodes.item(x); if (node.getNodeName().equalsIgnoreCase(tagName)) { NodeList childNodes = node.getChildNodes(); for (int y = 0; y < childNodes.getLength(); y++ ) { Node data = childNodes.item(y); if ( data.getNodeType() == Node.ATTRIBUTE_NODE ) { if ( data.getNodeName().equalsIgnoreCase(attrName) ) return data.getNodeValue(); } } } } return ""; } }