/tools/Ruby/lib/ruby/1.8/xsd/xmlparser/xmlparser.rb

http://github.com/agross/netopenspace · Ruby · 50 lines · 32 code · 11 blank · 7 comment · 0 complexity · 657a6a0f228fa155bc6ede2137b6b2a5 MD5 · raw file

  1. # XSD4R - XMLParser XML parser library.
  2. # Copyright (C) 2001, 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
  3. # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
  4. # redistribute it and/or modify it under the same terms of Ruby's license;
  5. # either the dual license version in 2003, or any later version.
  6. require 'xsd/xmlparser'
  7. require 'xml/parser'
  8. module XSD
  9. module XMLParser
  10. class XMLParser < XSD::XMLParser::Parser
  11. class Listener < XML::Parser
  12. begin
  13. require 'xml/encoding-ja'
  14. include XML::Encoding_ja
  15. rescue LoadError
  16. # uconv may not be installed.
  17. end
  18. end
  19. def do_parse(string_or_readable)
  20. # XMLParser passes a String in utf-8.
  21. @charset = 'utf-8'
  22. @parser = Listener.new
  23. @parser.parse(string_or_readable) do |type, name, data|
  24. case type
  25. when XML::Parser::START_ELEM
  26. start_element(name, data)
  27. when XML::Parser::END_ELEM
  28. end_element(name)
  29. when XML::Parser::CDATA
  30. characters(data)
  31. else
  32. raise FormatDecodeError.new("Unexpected XML: #{ type }/#{ name }/#{ data }.")
  33. end
  34. end
  35. end
  36. add_factory(self)
  37. end
  38. end
  39. end