--- /dev/null
+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
+import mir.util.xml.XMLName;\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
+ XMLName key = XMLReaderTool.getXMLNameForQualifiedName((String) entry.getKey());\r
+ String value = (String) entry.getValue();\r
+ if (value==null)\r
+ value = key.getLocalName();\r
+\r
+ attributes.put(key, value);\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