`
hot88zh
  • 浏览: 185038 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ruby1.8.6自带的rexml问题解决

阅读更多

尝试用rexml来解析xml文档的时候出现问题:

 undefined local variable or method 'transitive' in document.rb

 

于是乎查看rexml的document.rb文件,大概在182行附近有一个方法:

def write( output=$stdout, indent=-1, trans=false, ie_hack=false )
      if xml_decl.encoding != "UTF-8" && !output.kind_of?(Output)
        output = Output.new( output, xml_decl.encoding )
      end
      formatter = if indent > -1
          if transitive
            REXML::Formatters::Transitive.new( indent, ie_hack )
          else
            REXML::Formatters::Pretty.new( indent, ie_hack )
          end
        else
          REXML::Formatters::Default.new( ie_hack )
        end
      formatter.write( self, output )
end

 看到下面有一个if语句与方法后面的形参里面的trans不符合。。。原来是if语句后面的参数写错了,我说的呢,把

 if transitive

 

修改为

 if trans

 

OK,问题解决了,哎,可能ruby以后的版本会修复这个bug吧。。。。。。

 

 

 

 

 

呃……又发现了一个问题……

提示:private method `gsub' called for 6:Fixnum

 

看来gsub这个方法还不能支持数字为属性值的标签转换……打开rexml文件夹下面的text.rb,找到代码,大概在289行

def Text::normalize( input, doctype=nil, entity_filter=nil )
      copy = input
      # Doing it like this rather than in a loop improves the speed
      #copy = copy.gsub( EREFERENCE, '&' )
      copy = copy.gsub( "&", "&" )
............省略后面的 

修改代码

copy=input

ruby = input.to_s

解决!

 

如果还有错误还得解决……rexml的作者可真粗心呀。。。。

1
0
分享到:
评论

相关推荐

    ruby1.8.6(linux)

    标题与描述中的关键词“ruby1.8.6”指向了Ruby编程语言的一个特定版本,即Ruby 1.8.6。这一版本在2007年发布,是Ruby语言发展历史上的一个重要里程碑,它在性能、稳定性和安全性方面相较于之前的版本有了显著提升,...

    Ruby1.8.6 One-Click Installer.part2.rar

    Ruby1.8.6 One-Click Installer

    ruby1.8.6-26

    Ruby 1.8.6不再被官方支持,可能存在已知的安全漏洞和性能问题。因此,除非有特定的需求,一般不建议在新的项目中使用。 总的来说,Ruby 1.8.6是Ruby发展史上的一座里程碑,它的存在见证了Ruby语言的成长。对于学习...

    ruby1.8.6 + rails2.0.2 安装配置 详细说明

    同时,提供的`安装说明.xls`文件应该包含更详细的步骤和可能遇到的问题解决方案,确保您在整个过程中得到充分的指导。 最后,记住在开发过程中保持版本的一致性是非常重要的,因为不同版本的软件之间可能存在兼容性...

    ruby-1.8.6.zip

    Ruby 1.8.6 是一个古老的 Ruby 语言版本,发布于2009年,是许多开发者早期学习和构建应用程序的重要版本。Ruby 是一种面向对象的、动态类型的编程语言,以其简洁、清晰的语法和强大的元编程能力而受到欢迎。在 Ruby ...

    ruby1.8.6stdlib.rar完整版

    Ruby-doc is a project dedicated to creating and collecting documentation on Ruby. You can find collections of articles and other resources at the website. stdlib-doc is a RubyForge project that ...

    Ruby 1.8.6 on Rails 2.1.0 Install.txt

    ### Ruby 1.8.6 与 Rails 2.1.0 的安装指南 #### 安装背景 本文档旨在指导用户如何在 Windows 操作系统上安装 Ruby 1.8.6 版本以及 Rails 2.1.0 版本,并确保其正确运行。这些版本虽然已经比较老旧,但在某些特定...

    ruby 1.8.6官方chm文档

    ruby 1.8.6官方chm文档,做为ruby开发者,这是必备文档.

    ruby-enterprise-1.8.6-20090201

    4. **Enterprise Features(企业级特性)**:REE还包含了一些额外的库和工具,如 Passenger(又名Mod_Ruby,一个流行的Ruby on Rails部署解决方案),这些工具和库旨在简化服务器部署和管理,提高生产环境的稳定性。...

    Ruby1.8.6 One-Click Installer.part1.rar

    Ruby1.8.6 One-Click Installer

    Ruby1.8.6 One-Click Installer无效

    Ruby1.8.6 One-Click Installer带SciTE

    ruby-1.8.6.tar.gz 编译器

    Ruby 1.8.6是Ruby的一个较旧版本,发布于2011年,尽管它已经被更现代的版本如Ruby 2.x和3.x取代,但在某些特定场景或项目中,仍然有其应用价值。 在描述中提到的"ruby-1.8.6.tar.gz"是一个压缩包,它包含了完整的...

    ruby-1.8.6-p114.tar.gz

    标题中的"ruby-1.8.6-p114.tar.gz"表明这是一个关于Ruby编程语言的老版本源码包。Ruby是一种面向对象的、动态类型的脚本语言,由日本人松本行弘(Yukihiro Matsumoto)在1990年代末期设计并开发。1.8.6是其版本号,...

    ruby1.8.6 API

    好用的API chm格式 想要的就下载吧!!!!

    Ruby on Rails安装指南(Ruby 1.8.6+Rails 2.0.2)

    访问Ruby官方网站或镜像站点,下载与操作系统相对应的Ruby安装包,确保下载的版本至少为1.8.6。安装过程通常是一个向导流程,用户只需按照提示完成各个步骤即可。安装完成后,可以通过在命令行输入`ruby -v`来检查...

    ruby-1.8.6.tar.bz2

    ruby-1.8.6.tar.bz2

    ruby 1.8.6 api

    ruby api ruby文档 英文 ruby开发必备

    脚本引擎内核源代码之:Ruby-1.8.6.tar.gz

    在标题中的"Ruby-1.8.6.tar.gz"指的是Ruby的一个特定版本,即1.8.6,该版本被封装在一个tar.gz压缩文件中。这种格式常用于Linux和Unix系统,它结合了tar(归档)和gzip(压缩)工具,便于存储和传输大文件。 描述中...

    ruby and watir 安装指南

    主要问题是 Watir 的依赖包 `activesupport` 需要 Ruby 版本 >= 1.8.7,而当前系统上安装的是 Ruby 1.8.6。此外,RubyGems 的自动更新功能也出现了问题。 #### 解决方案 1. **安装 Ruby:** - 下载并安装 `ruby...

    ruby186-26.rar

    由于 Ruby 1.8.6 已经过时,使用它可能会遇到兼容性问题,安全漏洞以及缺少开发者工具和库的支持。因此,如果你正在开始一个新的项目,建议升级到更高版本的 Ruby,以利用最新的语言特性和社区支持。同时,对于历史...

Global site tag (gtag.js) - Google Analytics