source: extensions/gsdl-video/trunk/installed/cmdline/lib/ruby/1.8/rss/xmlparser.rb@ 18425

Last change on this file since 18425 was 18425, checked in by davidb, 15 years ago

Video extension to Greenstone

File size: 1.6 KB
Line 
1begin
2 require "xml/parser"
3rescue LoadError
4 require "xmlparser"
5end
6
7begin
8 require "xml/encoding-ja"
9rescue LoadError
10 require "xmlencoding-ja"
11 if defined?(Kconv)
12 module XMLEncoding_ja
13 class SJISHandler
14 include Kconv
15 end
16 end
17 end
18end
19
20module XML
21 class Parser
22 unless defined?(Error)
23 Error = ::XMLParserError
24 end
25 end
26end
27
28module RSS
29
30 class REXMLLikeXMLParser < ::XML::Parser
31
32 include ::XML::Encoding_ja
33
34 def listener=(listener)
35 @listener = listener
36 end
37
38 def startElement(name, attrs)
39 @listener.tag_start(name, attrs)
40 end
41
42 def endElement(name)
43 @listener.tag_end(name)
44 end
45
46 def character(data)
47 @listener.text(data)
48 end
49
50 def xmlDecl(version, encoding, standalone)
51 @listener.xmldecl(version, encoding, standalone == 1)
52 end
53
54 def processingInstruction(target, content)
55 @listener.instruction(target, content)
56 end
57
58 end
59
60 class XMLParserParser < BaseParser
61
62 class << self
63 def listener
64 XMLParserListener
65 end
66 end
67
68 private
69 def _parse
70 begin
71 parser = REXMLLikeXMLParser.new
72 parser.listener = @listener
73 parser.parse(@rss)
74 rescue ::XML::Parser::Error => e
75 raise NotWellFormedError.new(parser.line){e.message}
76 end
77 end
78
79 end
80
81 class XMLParserListener < BaseListener
82
83 include ListenerMixin
84
85 def xmldecl(version, encoding, standalone)
86 super
87 # Encoding is converted to UTF-8 when XMLParser parses XML.
88 @encoding = 'UTF-8'
89 end
90
91 end
92
93end
Note: See TracBrowser for help on using the repository browser.