diff --git a/vtm-gdx-html/src/org/oscim/gdx/emu/org/oscim/backend/MyAttributes.java b/vtm-gdx-html/src/org/oscim/gdx/emu/org/oscim/backend/MyAttributes.java new file mode 100644 index 00000000..34f26fdb --- /dev/null +++ b/vtm-gdx-html/src/org/oscim/gdx/emu/org/oscim/backend/MyAttributes.java @@ -0,0 +1,83 @@ +package org.oscim.backend; + +import org.xml.sax.Attributes; + +import com.google.gwt.xml.client.NamedNodeMap; +import com.google.gwt.xml.client.Node; + +public class MyAttributes implements Attributes{ + private NamedNodeMap map; + + public MyAttributes(Node n){ + map = n.getAttributes(); + } + + public String getValue(int i) { + return map.item(i).getNodeValue(); + } + + public int getLength() { + return map.getLength(); + } + + public String getLocalName(int i) { + return map.item(i).getNodeName(); + } + + public String getValue(String string) { + Node n = map.getNamedItem(string); + if (n == null) + return null; + + return n.getNodeValue(); + } + + @Override + public String getURI(int paramInt) { + Log.d("..", "missing"); + return null; + } + + @Override + public String getQName(int paramInt) { + Log.d("..", "missing"); + return null; + } + + @Override + public String getType(int paramInt) { + Log.d("..", "missing"); + return null; + } + + @Override + public int getIndex(String paramString1, String paramString2) { + Log.d("..", "missing"); + return 0; + } + + @Override + public int getIndex(String paramString) { + Log.d("..", "missing"); + return 0; + } + + @Override + public String getType(String paramString1, String paramString2) { + Log.d("..", "missing"); + return null; + } + + @Override + public String getType(String paramString) { + Log.d("..", "missing"); + return null; + } + + @Override + public String getValue(String paramString1, String paramString2) { + Log.d("..", "missing"); + return null; + } + +} diff --git a/vtm-gdx-html/src/org/oscim/gdx/emu/org/oscim/backend/MyXMLReader.java b/vtm-gdx-html/src/org/oscim/gdx/emu/org/oscim/backend/MyXMLReader.java new file mode 100644 index 00000000..f8db94f8 --- /dev/null +++ b/vtm-gdx-html/src/org/oscim/gdx/emu/org/oscim/backend/MyXMLReader.java @@ -0,0 +1,67 @@ +package org.oscim.backend; + +import java.io.IOException; +import java.io.InputStream; + +import org.oscim.backend.Log; +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 { + Log.d("..", "read theme"); + 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) { + //Log.d("..", "null element"); + return; + } + //Log.d("..", "handle element " + n.getNodeName()); + + 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++) { + //Log.d("..", "get child " + i + "/" + len); + handleElement(l.item(i)); + } + } + mHandler.endElement(null, localName, null); + } + + } + + private DefaultHandler mHandler; + + public void setContentHandler(DefaultHandler handler) { + mHandler = handler; + } + +} diff --git a/vtm-gdx-html/src/org/oscim/gdx/emu/org/oscim/backend/XMLReaderAdapter.java b/vtm-gdx-html/src/org/oscim/gdx/emu/org/oscim/backend/XMLReaderAdapter.java new file mode 100644 index 00000000..363597fe --- /dev/null +++ b/vtm-gdx-html/src/org/oscim/gdx/emu/org/oscim/backend/XMLReaderAdapter.java @@ -0,0 +1,16 @@ +package org.oscim.backend; + +import java.io.IOException; +import java.io.InputStream; + +import org.xml.sax.SAXException; +import org.xml.sax.helpers.DefaultHandler; + +public class XMLReaderAdapter { + public void parse(DefaultHandler handler, InputStream is) throws IOException, SAXException { + + MyXMLReader xmlReader = new MyXMLReader(); + xmlReader.setContentHandler(handler); + xmlReader.parse(is); + } +} diff --git a/vtm-gdx-html/src/org/oscim/gdx/emu/org/xml/sax/Attributes.java b/vtm-gdx-html/src/org/oscim/gdx/emu/org/xml/sax/Attributes.java new file mode 100644 index 00000000..4b3271d8 --- /dev/null +++ b/vtm-gdx-html/src/org/oscim/gdx/emu/org/xml/sax/Attributes.java @@ -0,0 +1,28 @@ +package org.xml.sax; + + +public abstract interface Attributes { + public abstract int getLength(); + + public abstract String getURI(int paramInt); + + public abstract String getLocalName(int paramInt); + + public abstract String getQName(int paramInt); + + public abstract String getType(int paramInt); + + public abstract String getValue(int paramInt); + + public abstract int getIndex(String paramString1, String paramString2); + + public abstract int getIndex(String paramString); + + public abstract String getType(String paramString1, String paramString2); + + public abstract String getType(String paramString); + + public abstract String getValue(String paramString1, String paramString2); + + public abstract String getValue(String paramString); +} \ No newline at end of file diff --git a/vtm-gdx-html/src/org/oscim/gdx/emu/org/xml/sax/SAXException.java b/vtm-gdx-html/src/org/oscim/gdx/emu/org/xml/sax/SAXException.java new file mode 100644 index 00000000..12aececc --- /dev/null +++ b/vtm-gdx-html/src/org/oscim/gdx/emu/org/xml/sax/SAXException.java @@ -0,0 +1,19 @@ +package org.xml.sax; + +import java.io.IOException; + +public class SAXException extends IOException { + + /** + * + */ + private static final long serialVersionUID = 1L; + + public SAXException(String str) { + super(str); + } + public SAXException(String str, Throwable throwable) + { + super(str); + } +} diff --git a/vtm-gdx-html/src/org/oscim/gdx/emu/org/xml/sax/SAXParseException.java b/vtm-gdx-html/src/org/oscim/gdx/emu/org/xml/sax/SAXParseException.java new file mode 100644 index 00000000..a3855caa --- /dev/null +++ b/vtm-gdx-html/src/org/oscim/gdx/emu/org/xml/sax/SAXParseException.java @@ -0,0 +1,18 @@ +package org.xml.sax; + +public class SAXParseException extends SAXException { + + /** + * + */ + private static final long serialVersionUID = 1L; + + public SAXParseException(String str) { + super(str); + } + public SAXParseException(String str, Throwable throwable) + { + super(str); + } + +} diff --git a/vtm-gdx-html/src/org/oscim/gdx/emu/org/xml/sax/helpers/DefaultHandler.java b/vtm-gdx-html/src/org/oscim/gdx/emu/org/xml/sax/helpers/DefaultHandler.java new file mode 100644 index 00000000..b64ec455 --- /dev/null +++ b/vtm-gdx-html/src/org/oscim/gdx/emu/org/xml/sax/helpers/DefaultHandler.java @@ -0,0 +1,29 @@ +package org.xml.sax.helpers; + +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; + +public class DefaultHandler { + public void endDocument() { + + } + + public void error(SAXParseException exception) { + + } + public void warning(SAXParseException exception) { + + } + + public void startElement(String uri, String localName, String qName, + Attributes attributes) throws SAXException { + + } + + public void endElement(String uri, String localName, String qName) { + + } + + +}