Welcome to the "trac"-ing site of soap4r!
[soap4r] [httpclient] [openpgp4u] [pkcs1] [logger] [csv] [vtr]

root/trunk/lib/xsd/xmlparser/libxmlparser.rb

Revision 1997, 1.9 kB (checked in by nahi, 1 year ago)
Line 
1 # XSD4R - XMLParser XML parser library.
2 # Copyright (C) 2000-2007  NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
4 # This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
5 # redistribute it and/or modify it under the same terms of Ruby's license;
6 # either the dual license version in 2003, or any later version.
7
8
9 require 'xsd/xmlparser'
10 require 'xml/libxml'
11
12
13 module XSD
14 module XMLParser
15
16
17 class LibXMLParser < XSD::XMLParser::Parser
18   include XML::SaxParser::Callbacks
19
20   def do_parse(string_or_readable)
21     if string_or_readable.respond_to?(:read)
22       string = string_or_readable.read
23     else
24       string = string_or_readable
25     end
26     # XMLParser passes a String in utf-8.
27     @charset = 'utf-8'
28     @parser = XML::SaxParser.new
29     @parser.callbacks = self
30     @parser.string = string
31     @parser.parse
32   end
33
34   ENTITY_REF_MAP = {
35     'lt' => '<',
36     'gt' => '>',
37     'amp' => '&',
38     'quot' => '"',
39     'apos' => '\''
40   }
41
42   #def on_internal_subset(name, external_id, system_id)
43   #  nil
44   #end
45
46   #def on_is_standalone()
47   #  nil
48   #end
49
50   #def on_has_internal_subset()
51   #  nil
52   #end
53
54   #def on_has_external_subset()
55   #  nil
56   #end
57
58   #def on_start_document()
59   #  nil
60   #end
61
62   #def on_end_document()
63   #  nil
64   #end
65
66   def on_start_element(name, attr_hash)
67     start_element(name, attr_hash)
68   end
69
70   def on_end_element(name)
71     end_element(name)
72   end
73
74   def on_reference(name)
75     characters(ENTITY_REF_MAP[name])
76   end
77
78   def on_characters(chars)
79     characters(chars)
80   end
81
82   #def on_processing_instruction(target, data)
83   #  nil
84   #end
85
86   #def on_comment(msg)
87   #  nil
88   #end
89
90   def on_parser_warning(msg)
91     warn(msg)
92   end
93
94   def on_parser_error(msg)
95     raise ParseError.new(msg)
96   end
97
98   def on_parser_fatal_error(msg)
99     raise ParseError.new(msg)
100   end
101
102   def on_cdata_block(cdata)
103     characters(cdata)
104   end
105
106   def on_external_subset(name, external_id, system_id)
107     nil
108   end
109
110   add_factory(self)
111 end
112
113
114 end
115 end
Note: See TracBrowser for help on using the browser.