package org.oscim.backend; import java.io.IOException; import java.io.InputStream; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; import com.google.gwt.xml.client.Document; import com.google.gwt.xml.client.Node; import com.google.gwt.xml.client.NodeList; import com.google.gwt.xml.client.XMLParser; public class MyXMLReader { public void parse(InputStream is) throws SAXException { StringBuilder sb = new StringBuilder(); byte[] buf = new byte[8192]; int read; try { while ((read = is.read(buf)) >= 0) { if (read > 0) sb.append(new String(buf, 0, read)); } } catch (IOException e) { e.printStackTrace(); } Document d = XMLParser.parse(sb.toString()); handleElement(d.getFirstChild()); mHandler.endDocument(); } int level = 0; void handleElement(Node n) throws SAXException { if (n == null) { return; } if (n.getNodeType() == Node.ELEMENT_NODE) { String localName = n.getNodeName(); mHandler.startElement(null, localName, null, new MyAttributes(n)); if (n.hasChildNodes()) { NodeList l = n.getChildNodes(); for (int i = 0, len = l.getLength(); i < len; i++) { handleElement(l.item(i)); } } mHandler.endElement(null, localName, null); } } private DefaultHandler mHandler; public void setContentHandler(DefaultHandler handler) { mHandler = handler; } }