小编Mik*_*use的帖子

对于2.4MB XML文件,您会推荐哪个Ruby XML库?

我有一个2.4 MB的XML文件,从Microsoft Project导出(嘿,我是受害者!),我要求我提取重新呈现的某些细节.忽略请求的智能或其他方面,我应该首先从Ruby的角度尝试哪个库?

我知道以下内容(没有特别的顺序):

我更喜欢打包成Ruby宝石的东西,我怀疑Chilkat库不是.

性能不是一个主要问题 - 我不认为每天需要运行一次以上(每周一次更有可能).我对那些与XML相关的东西一样容易使用的东西更感兴趣.

编辑:我尝试了宝石的:

hpricot是一个国家英里,最简单.例如,要在此XML中提取SaveVersion标记的内容(保存在名为'test.xml'的文件中)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Project xmlns="http://schemas.microsoft.com/project">
    <SaveVersion>12</SaveVersion>
</Project>
Run Code Online (Sandbox Code Playgroud)

采取这样的事情:

doc = Hpricot.XML(open('test.xml'))
version = (doc/:Project/:SaveVersion).first.inner_html
Run Code Online (Sandbox Code Playgroud)

hpricot似乎相对不关心命名空间,在这个例子中很好:只有一个,但可能是复杂文档的问题.由于hpricot也非常慢,我宁愿想象这将是一个解决自己的问题.

libxml-ruby的速度提高了一个数量级,了解命名空间(我需要花费几个小时来计算出来)并且完全接近XML金属 - XPath查询和所有其他的东西都在那里.如果像我一样,只有在极端胁迫的情况下才能打开XML文档,这不一定是好事.帮助器模块主要用于提供有效处理默认命名空间的示例.这大致是我最终得到的结论(我不以任何方式断言它的美丽,正确性或其他价值,它就在我现在的位置):

xml_parser = XML::Parser.new
xml_parser.string = File.read(path)
doc = xml_parser.parse
@root = doc.root
@scopes = { :in_node => '', :in_root => '/', :in_doc => '//' }
@ns_prefix = 'p'
@ns = "#{@ns_prefix}:#{@root.namespace[0].href}"
version = @root.find_first(xpath_qry("Project/SaveVersion", :in_root), @ns).content.to_i

def xpath_qry(tags, scope = :in_node)
  "#{@scopes[scope]}" + tags.split(/\//).collect{ …
Run Code Online (Sandbox Code Playgroud)

ruby xml

17
推荐指数
1
解决办法
4318
查看次数

如何从Ruby调用Windows DLL函数?

我想使用Ruby访问DLL中的函数.我想使用C的低级访问,同时仍然保留编写Ruby代码的简单性.我该如何做到这一点?

c ruby windows dll

17
推荐指数
3
解决办法
1万
查看次数

Ruby新手 - 我如何改变字符串?

想要洗牌一个字符串.这是我的代码:它有什么问题?谢谢.

>> def string_shuffle(s)
>>   s.split('').shuffle(s.length()).join
>>   return s
>> end
Run Code Online (Sandbox Code Playgroud)

ruby

17
推荐指数
3
解决办法
9080
查看次数

如何使用jQuery将JSON数据输出到Ruby on Rails?

我试图发送一个看起来像这样的jQuery Ajax PUT请求:

$.ajax({
      type: "PUT",
      url: '/admin/pages/1.json',
      data: { page : {...} },
      dataType: 'json',
      success: function(msg) {
        alert( "Data Saved: " + msg );
      }
});
Run Code Online (Sandbox Code Playgroud)

我的控制器大致如下:

      respond_to do |format|
         if @page.update_attributes params[:page]
           format.html{ ... }
           format.json{ render :json => {:saved => 'ok'}.to_json }
         else
           format.html{ ... }
           format.json{ render :json => {:saved => 'fail'}.to_json }
         end
       end
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误.

而评估nil.name /Library/Ruby/Gems/1.8/gems/activesupport-2.3.2/lib/active_support/xml_mini/rexml.rb:29:in发生错误merge_element!' /Library/Ruby/Gems/1.8/gems/activesupport-2.3.2/lib/active_support/xml_mini/rexml.rb:18:in'(解析DELEGATION:2:)中__send__' (__DELEGATION__):2:in解析'/ Library/Ruby/Gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/hash/conversions.rb:154:in`from_xml'......

就像Ruby on Rails试图将参数解析为XML一样,但我想使用JSON!

如何将JSON放到Ruby on Rails上?

ajax jquery json ruby-on-rails

15
推荐指数
2
解决办法
2万
查看次数

在Rails中是否有一个帮助多元化的辅助方法?

def plural(value, string)
  "#{value} #{value.abs == 1 ? string.singularize : string.pluralize}"
end
Run Code Online (Sandbox Code Playgroud)

如果没有,这个方法的简短名称是什么?

ruby ruby-on-rails

14
推荐指数
1
解决办法
4166
查看次数

Ruby中最好的Diff库是什么?

我看过diff-lcs(http://raa.ruby-lang.org/project/diff-lcs),但它记录很少,似乎没有维护.

是否有任何好的,积极维护的红宝石宝石用于区分文本或html文件?

ruby diff rubygems

14
推荐指数
2
解决办法
9337
查看次数

如何使用Ruby阅读Excel电子表格的内容?

我试图用Ruby读取Excel电子表格文件,但它没有读取文件的内容.

这是我的剧本

book = Spreadsheet.open 'myexcel.xls';
sheet1 = book.worksheet 0
sheet1.each do |row|
  puts row.inspect ;
  puts row.format 2; 
  puts row[1]; 
  exit;
end
Run Code Online (Sandbox Code Playgroud)

它给了我以下内容:

[DEPRECATED] By requiring 'parseexcel', 'parseexcel/parseexcel' and/or
             'parseexcel/parser' you are loading a Compatibility layer which
             provides a drop-in replacement for the ParseExcel library. This
             code makes the reading of Spreadsheet documents less efficient and
             will be removed in Spreadsheet version 1.0.0

#<Spreadsheet::Excel::Row:0xffffffdbc3e0d2 @worksheet=#<Spreadsheet::Excel::Worksheet:0xb79b8fe0> @outline_level=0 @idx=0 @hidden=false @height= @default_format= @formats= []>
#<Spreadsheet::Format:0xb79bc8ac>
nil
Run Code Online (Sandbox Code Playgroud)

我需要获取文件的实际内容.我究竟做错了什么?

ruby rubygems spreadsheet parseexcel

14
推荐指数
1
解决办法
5万
查看次数

IDA pro asm指令更改

我只是想知道如何在IDA-view A中更改asm指令:

  1. 如何编辑指令(例如:jnz to jmp)?
  2. 如何插入新指令(调用func1,调用func2插入现有代码)?

我知道如何制作dif文件,我知道如何应用我的DLL上的更改,但我怎么能"有所作为"?如何在IDA中编辑代码?

我学会了如何修改DLL:

  1. 修改代码(如何?)
  2. 生成dif文件.
  3. 使用dif文件和脚本将代码修改应用于DLL.

assembly reverse-engineering ida

13
推荐指数
1
解决办法
3万
查看次数

如何将ruby gem添加到"require"的include路径中

我正在创造我期望的红宝石宝石.任何人都有一个很好的链接指向将简单的库或插件转换为gem的教程?另外,特别是,Ruby使用什么来允许需要查找宝石?它似乎不仅仅是将文件放在gem路径中(或者我的配置搞砸了?).

谢谢

ruby rubygems

12
推荐指数
1
解决办法
1万
查看次数

Rails(ActiveRecord)多对多表

我有两个模型,用户和组.每个组可以有许多用户,每个用户可以在许多组中.

我目前有一些简单的东西:

用户:

has_many    :groups
Run Code Online (Sandbox Code Playgroud)

组:

has_many    :users
Run Code Online (Sandbox Code Playgroud)

所以我有一个groups_users表,它只是用group_id和user_id创建行.我想在此添加另一列(我有),问题是如何在不使用自定义SQL调用的情况下从模型中访问它?在组模型中,我可以使用self.users,在用户中我可以使用self.groups

有没有办法从用户模型更改此表中的第三列?

对不起,如果这令人困惑,请告知此事

ruby activerecord many-to-many ruby-on-rails

12
推荐指数
2
解决办法
2万
查看次数