package org.itsnat.droid.impl.domparser; import android.util.Xml; import org.itsnat.droid.ItsNatDroidException; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; import java.io.Reader; import java.io.StringReader; /** * Created by jmarranz on 11/05/2016. */ public class XMLDOMAnimDiscriminatorParser { private static XmlPullParser newPullParser(Reader input) { try { XmlPullParser parser = Xml.newPullParser(); // No es necesario, así es más rápido: parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true); parser.setInput(input); return parser; } catch (XmlPullParserException ex) { throw new ItsNatDroidException(ex); } } public String parse(String markup) { StringReader input = new StringReader(markup); return parse(input); } private String parse(Reader input) { try { XmlPullParser parser = newPullParser(input); return parse(parser); } catch (IOException ex) { throw new ItsNatDroidException(ex); } catch (XmlPullParserException ex) { throw new ItsNatDroidException(ex); } finally { try { input.close(); } catch (IOException ex) { throw new ItsNatDroidException(ex); } } } private String parse(XmlPullParser parser) throws IOException, XmlPullParserException { return getRootElementName(parser); } protected static String getRootElementName(XmlPullParser parser) throws IOException, XmlPullParserException { while (parser.next() != XmlPullParser.END_TAG) { if (parser.getEventType() != XmlPullParser.START_TAG) // Nodo de texto etc continue; return parser.getName(); } throw new ItsNatDroidException("INTERNAL ERROR: NO ROOT ELEMENT"); } }