我有一个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访问DLL中的函数.我想使用C的低级访问,同时仍然保留编写Ruby代码的简单性.我该如何做到这一点?
想要洗牌一个字符串.这是我的代码:它有什么问题?谢谢.
>> def string_shuffle(s)
>> s.split('').shuffle(s.length()).join
>> return s
>> end
Run Code Online (Sandbox Code Playgroud) 我试图发送一个看起来像这样的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上?
def plural(value, string)
"#{value} #{value.abs == 1 ? string.singularize : string.pluralize}"
end
Run Code Online (Sandbox Code Playgroud)
如果没有,这个方法的简短名称是什么?
我看过diff-lcs(http://raa.ruby-lang.org/project/diff-lcs),但它记录很少,似乎没有维护.
是否有任何好的,积极维护的红宝石宝石用于区分文本或html文件?
我试图用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)
我需要获取文件的实际内容.我究竟做错了什么?
我只是想知道如何在IDA-view A中更改asm指令:
我知道如何制作dif文件,我知道如何应用我的DLL上的更改,但我怎么能"有所作为"?如何在IDA中编辑代码?
我学会了如何修改DLL:
我正在创造我期望的红宝石宝石.任何人都有一个很好的链接指向将简单的库或插件转换为gem的教程?另外,特别是,Ruby使用什么来允许需要查找宝石?它似乎不仅仅是将文件放在gem路径中(或者我的配置搞砸了?).
谢谢
我有两个模型,用户和组.每个组可以有许多用户,每个用户可以在许多组中.
我目前有一些简单的东西:
用户:
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 ×8
rubygems ×3
activerecord ×1
ajax ×1
assembly ×1
c ×1
diff ×1
dll ×1
ida ×1
jquery ×1
json ×1
many-to-many ×1
parseexcel ×1
spreadsheet ×1
windows ×1
xml ×1