/* * Copyright (C) 2014 TU Darmstadt, Hessen, Germany. * Department of Computer Science Databases and Distributed Systems * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ /** * */ package de.tudarmstadt.dvs.myhealthassistant.myhealthhub.xml; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.StringReader; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import android.util.Log; /** * @author Christian Seeger * */ public class XMLParser { // for debugging private static boolean D = false; private static String TAG = "XMLParser"; public Document getDomElementFromFile(String filename) { return getDomElement(readFile(filename)); } public Document getDomElement(String xml){ Document doc = null; DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { DocumentBuilder db = dbf.newDocumentBuilder(); InputSource is = new InputSource(); is.setCharacterStream(new StringReader(xml)); doc = db.parse(is); if(D)Log.d(TAG, "File was parsed successfully."); } catch (ParserConfigurationException e) { Log.e("ParserConfigurationException Error: ", e.getMessage()); return null; } catch (SAXException e) { Log.e("SAXException Error: ", e.getMessage()); return null; } catch (IOException e) { Log.e("IOException Error: ", e.getMessage()); return null; } // return DOM return doc; } private String readFile(String filename) { StringBuilder filecontent = new StringBuilder(); File file = new File(filename); try { BufferedReader br = new BufferedReader(new FileReader(file)); if(D)Log.d(TAG, "StartProducer reading file: "+file.toString()+"..."); String line; String lineFeed = System.getProperty("line.separator"); while ((line = br.readLine()) != null) { filecontent.append(line).append(lineFeed); } if(D)Log.d(TAG, "Reading of file "+file.toString()+" is finished"); } catch (IOException e) { Log.e(TAG, "Unable to read file: "+file.toString()); } return filecontent.toString(); } public String getValue(Element item, String str) { NodeList n = item.getElementsByTagName(str); return this.getElementValue(n.item(0)); } public final String getElementValue( Node elem ) { Node child; if( elem != null){ if (elem.hasChildNodes()){ for( child = elem.getFirstChild(); child != null; child = child.getNextSibling() ){ if( child.getNodeType() == Node.TEXT_NODE ){ return child.getNodeValue(); } } } } return ""; } }