- 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
- #该片段来自于http://www.codesnippet.cn/detail/230120131868.html
来源: http://www.codesnippet.cn/detail/230120131868.html