- XML parser framework rewrite
[mir.git] / source / mir / util / xml / html / XMLHTMLParserProvider.java
diff --git a/source/mir/util/xml/html/XMLHTMLParserProvider.java b/source/mir/util/xml/html/XMLHTMLParserProvider.java
new file mode 100755 (executable)
index 0000000..35708eb
--- /dev/null
@@ -0,0 +1,91 @@
+package mir.util.xml.html;\r
+\r
+import java.io.IOException;\r
+import java.util.HashMap;\r
+import java.util.Iterator;\r
+import java.util.Map;\r
+\r
+import mir.util.xml.XMLParserEngine;\r
+import mir.util.xml.XMLParserExc;\r
+import mir.util.xml.XMLParserFailure;\r
+import mir.util.xml.XMLReaderTool;\r
+\r
+/**\r
+ */\r
+\r
+public class XMLHTMLParserProvider implements XMLParserEngine.XMLParserProvider {\r
+  public XMLHTMLParserProvider() {\r
+  }\r
+\r
+  public void parse(java.io.Reader aReader, final XMLParserEngine.XMLParserReceiver aReceiver) throws XMLParserExc, XMLParserFailure {\r
+    HTMLParser parser = new HTMLParser();\r
+\r
+    try {\r
+      aReceiver.startDocument();\r
+\r
+      parser.parse(aReader, new HTMLParser.ParserReceiver() {\r
+        public void dtd(String aDTD) throws HTMLParserExc {\r
+          try {\r
+            aReceiver.extra(aDTD);\r
+          }\r
+          catch (XMLParserExc t) {\r
+            throw new HTMLParserFailure(t);\r
+          }\r
+        }\r
+\r
+        public void openTag(String aTag, Map anAttributes) {\r
+          Map attributes = new HashMap();\r
+          Iterator i = anAttributes.entrySet().iterator();\r
+\r
+          while (i.hasNext()) {\r
+            Map.Entry entry = (Map.Entry) i.next();\r
+            attributes.put(\r
+                XMLReaderTool.getXMLNameForQualifiedName((String) entry.getKey()), entry.getValue());\r
+          }\r
+\r
+          try {\r
+            aReceiver.startElement(XMLReaderTool.getXMLNameForQualifiedName(aTag), attributes);\r
+          }\r
+          catch (XMLParserExc e) {\r
+            throw new HTMLParserFailure(e);\r
+          }\r
+        }\r
+\r
+        public void closeTag(String aTag) {\r
+          try {\r
+            aReceiver.endElement(XMLReaderTool.getXMLNameForQualifiedName(aTag));\r
+          }\r
+          catch (XMLParserExc e) {\r
+            throw new HTMLParserFailure(e);\r
+          }\r
+        }\r
+\r
+        public void comment(String aData) {\r
+          try {\r
+            aReceiver.extra(aData);\r
+          }\r
+          catch (XMLParserExc e) {\r
+            throw new HTMLParserFailure(e);\r
+          }\r
+        }\r
+\r
+        public void cdata(String aData) {\r
+          try {\r
+            aReceiver.text(aData);\r
+          }\r
+          catch (XMLParserExc e) {\r
+            throw new HTMLParserFailure(e);\r
+          }\r
+        }\r
+      });\r
+\r
+      aReceiver.endDocument();\r
+    }\r
+    catch (IOException e) {\r
+      throw new XMLParserFailure(e);\r
+    }\r
+    catch (HTMLParserExc e) {\r
+      throw new XMLParserFailure(e);\r
+    }\r
+  }\r
+}\r