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