package com.dteviot.epubviewer.XmlFilter; import java.io.IOException; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.XMLFilterImpl; import org.xmlpull.v1.XmlSerializer; import com.dteviot.epubviewer.Globals; import android.util.Log; /* * Adapter that converts an XmlSerializer into * a XmlFilter */ public class XmlSerializerToXmlFilterAdapter extends XMLFilterImpl { XmlSerializer mSerializer; public XmlSerializerToXmlFilterAdapter(XmlSerializer serializer) { mSerializer = serializer; } @Override public void startElement(String namespaceURI, String localName, String qualifiedName, Attributes attrs) throws SAXException { super.startElement(namespaceURI, localName, qualifiedName, attrs); try { mSerializer.startTag(namespaceURI, localName); for(int i = 0; i < attrs.getLength(); ++i) { mSerializer.attribute(attrs.getURI(i), attrs.getLocalName(i), attrs.getValue(i)); } } catch (IOException e) { exceptionHandler(e); } } @Override public void endElement(String namespaceURI, String localName, String qualifiedName) throws SAXException { super.endElement(namespaceURI, localName, qualifiedName); try { mSerializer.endTag(namespaceURI, localName); } catch (IOException e) { exceptionHandler(e); } } @Override public void startDocument() throws SAXException { super.startDocument(); try { mSerializer.startDocument("UTF-8", null); } catch (IOException e) { exceptionHandler(e); } } @Override public void endDocument() throws SAXException { super.endDocument(); try { mSerializer.endDocument(); } catch (IOException e) { exceptionHandler(e); } } @Override public void characters(char[] text, int start, int length) throws SAXException { super.characters(text, start, length); try { mSerializer.text(text, start, length); } catch (IOException e) { exceptionHandler(e); } } @Override public void startPrefixMapping(String prefix, String uri) throws SAXException { super.startPrefixMapping(prefix, uri); try { mSerializer.setPrefix(prefix, uri); } catch (IOException e) { exceptionHandler(e); } } private static void exceptionHandler(IOException e) { Log.e(Globals.TAG, "Error writing XML ", e); } }