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

http://github.com/agross/netopenspace · Ruby · 54 lines · 31 code · 16 blank · 7 comment · 1 complexity · 68b26ce67f9da61e6d71079c50ee5985 MD5 · raw file

  1. # XSD4R - REXMLParser XML parser library.
  2. # Copyright (C) 2002, 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 'rexml/streamlistener'
  8. require 'rexml/document'
  9. module XSD
  10. module XMLParser
  11. class REXMLParser < XSD::XMLParser::Parser
  12. include REXML::StreamListener
  13. def do_parse(string_or_readable)
  14. source = nil
  15. source = REXML::SourceFactory.create_from(string_or_readable)
  16. source.encoding = charset if charset
  17. # Listener passes a String in utf-8.
  18. @charset = 'utf-8'
  19. REXML::Document.parse_stream(source, self)
  20. end
  21. def epilogue
  22. end
  23. def tag_start(name, attrs)
  24. start_element(name, attrs)
  25. end
  26. def tag_end(name)
  27. end_element(name)
  28. end
  29. def text(text)
  30. characters(text)
  31. end
  32. def xmldecl(version, encoding, standalone)
  33. # Version should be checked.
  34. end
  35. add_factory(self)
  36. end
  37. end
  38. end