- 论坛徽章:
- 0
|
- require 'xmlparser'
- class XMLRetry<Exception; end
- class SampleParser<XMLParser
- private
- def startElement(name, attr)
- if name == "person"
- attr.each do |key, value|
- print "Found person of type #{value}.\n"
- end
- end
- if name == "name"
- $print_cdata = true
- self.defaultCurrent
- else
- $print_cdata = false
- end
- end
- def endElement(name)
- if name == "name"
- $print_cdata = false
- end
- end
- def character(data)
- if $print_cdata
- puts ("\tName is: #{data}")
- end
- end
- end
- xml = $<.read
- parser = SampleParser.new
- def parser.unknownEncoding(e)
- raise XMLRetry, e
- end
- begin
- parser.parse(xml)
- rescue XMLRetry
- newencoding = nil
- e = $!.to_s
- parser = SampleParser.new(newencoding)
- retry
- rescue XMLParserError
- line = parser.line
- print "Parse error(#{line}): #{$!}\n"
- end
复制代码 |
|