- XML parser framework rewrite
[mir.git] / source / mir / util / xml / html / XMLHTMLParserProvider.java
1 package mir.util.xml.html;\r
2 \r
3 import java.io.IOException;\r
4 import java.util.HashMap;\r
5 import java.util.Iterator;\r
6 import java.util.Map;\r
7 \r
8 import mir.util.xml.XMLParserEngine;\r
9 import mir.util.xml.XMLParserExc;\r
10 import mir.util.xml.XMLParserFailure;\r
11 import mir.util.xml.XMLReaderTool;\r
12 \r
13 /**\r
14  */\r
15 \r
16 public class XMLHTMLParserProvider implements XMLParserEngine.XMLParserProvider {\r
17   public XMLHTMLParserProvider() {\r
18   }\r
19 \r
20   public void parse(java.io.Reader aReader, final XMLParserEngine.XMLParserReceiver aReceiver) throws XMLParserExc, XMLParserFailure {\r
21     HTMLParser parser = new HTMLParser();\r
22 \r
23     try {\r
24       aReceiver.startDocument();\r
25 \r
26       parser.parse(aReader, new HTMLParser.ParserReceiver() {\r
27         public void dtd(String aDTD) throws HTMLParserExc {\r
28           try {\r
29             aReceiver.extra(aDTD);\r
30           }\r
31           catch (XMLParserExc t) {\r
32             throw new HTMLParserFailure(t);\r
33           }\r
34         }\r
35 \r
36         public void openTag(String aTag, Map anAttributes) {\r
37           Map attributes = new HashMap();\r
38           Iterator i = anAttributes.entrySet().iterator();\r
39 \r
40           while (i.hasNext()) {\r
41             Map.Entry entry = (Map.Entry) i.next();\r
42             attributes.put(\r
43                 XMLReaderTool.getXMLNameForQualifiedName((String) entry.getKey()), entry.getValue());\r
44           }\r
45 \r
46           try {\r
47             aReceiver.startElement(XMLReaderTool.getXMLNameForQualifiedName(aTag), attributes);\r
48           }\r
49           catch (XMLParserExc e) {\r
50             throw new HTMLParserFailure(e);\r
51           }\r
52         }\r
53 \r
54         public void closeTag(String aTag) {\r
55           try {\r
56             aReceiver.endElement(XMLReaderTool.getXMLNameForQualifiedName(aTag));\r
57           }\r
58           catch (XMLParserExc e) {\r
59             throw new HTMLParserFailure(e);\r
60           }\r
61         }\r
62 \r
63         public void comment(String aData) {\r
64           try {\r
65             aReceiver.extra(aData);\r
66           }\r
67           catch (XMLParserExc e) {\r
68             throw new HTMLParserFailure(e);\r
69           }\r
70         }\r
71 \r
72         public void cdata(String aData) {\r
73           try {\r
74             aReceiver.text(aData);\r
75           }\r
76           catch (XMLParserExc e) {\r
77             throw new HTMLParserFailure(e);\r
78           }\r
79         }\r
80       });\r
81 \r
82       aReceiver.endDocument();\r
83     }\r
84     catch (IOException e) {\r
85       throw new XMLParserFailure(e);\r
86     }\r
87     catch (HTMLParserExc e) {\r
88       throw new XMLParserFailure(e);\r
89     }\r
90   }\r
91 }\r