Class: XSD::XMLParser::LibXMLParser
- Inherits:
-
Parser
show all
- Includes:
- XML::SaxParser::Callbacks
- Defined in:
- lib/xsd/xmlparser/libxmlparser.rb
Constant Summary
collapse
- ENTITY_REF_MAP =
{
'lt' => '<',
'gt' => '>',
'amp' => '&',
'quot' => '"',
'apos' => '\''
}
Instance Attribute Summary
Attributes inherited from Parser
#charset
Instance Method Summary
collapse
Methods inherited from Parser
add_factory, create_parser, factory, #initialize, #parse
Instance Method Details
#do_parse(string_or_readable) ⇒ Object
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/xsd/xmlparser/libxmlparser.rb', line 20
def do_parse(string_or_readable)
if string_or_readable.respond_to?(:read)
string = string_or_readable.read
else
string = string_or_readable
end
@charset = 'utf-8'
@parser = XML::SaxParser.string(string)
@parser.callbacks = self
@parser.parse
end
|
#on_cdata_block(cdata) ⇒ Object
106
107
108
|
# File 'lib/xsd/xmlparser/libxmlparser.rb', line 106
def on_cdata_block(cdata)
characters(cdata)
end
|
#on_characters(chars) ⇒ Object
82
83
84
|
# File 'lib/xsd/xmlparser/libxmlparser.rb', line 82
def on_characters(chars)
characters(chars)
end
|
#on_end_element(name) ⇒ Object
74
75
76
|
# File 'lib/xsd/xmlparser/libxmlparser.rb', line 74
def on_end_element(name)
end_element(name)
end
|
#on_external_subset(name, external_id, system_id) ⇒ Object
110
111
112
|
# File 'lib/xsd/xmlparser/libxmlparser.rb', line 110
def on_external_subset(name, external_id, system_id)
nil
end
|
#on_parser_error(msg) ⇒ Object
98
99
100
|
# File 'lib/xsd/xmlparser/libxmlparser.rb', line 98
def on_parser_error(msg)
raise ParseError.new(msg)
end
|
#on_parser_fatal_error(msg) ⇒ Object
102
103
104
|
# File 'lib/xsd/xmlparser/libxmlparser.rb', line 102
def on_parser_fatal_error(msg)
raise ParseError.new(msg)
end
|
#on_parser_warning(msg) ⇒ Object
def on_comment(msg)
nil
end
94
95
96
|
# File 'lib/xsd/xmlparser/libxmlparser.rb', line 94
def on_parser_warning(msg)
warn(msg)
end
|
#on_reference(name) ⇒ Object
78
79
80
|
# File 'lib/xsd/xmlparser/libxmlparser.rb', line 78
def on_reference(name)
characters(ENTITY_REF_MAP[name])
end
|
#on_start_element_ns(name, attributes, prefix, uri, namespaces) ⇒ Object
def on_end_document()
nil
end
65
66
67
68
69
70
71
72
|
# File 'lib/xsd/xmlparser/libxmlparser.rb', line 65
def on_start_element_ns(name, attributes, prefix, uri, namespaces)
name = "#{prefix}:#{name}" unless prefix.nil?
namespaces.each do |key,value|
nsprefix = key.nil? ? "xmlns" : "xmlns:#{key}"
attributes[nsprefix] = value
end
start_element(name, attributes)
end
|