1

我是编程初学者,写了这个小程序:

测试.rb:

# encoding: utf-8

require 'open-uri'
require 'nokogiri'

def parse_file 
  doc = Nokogiri::XML(File.open("test.xml"))
  parse_xml(doc)
end

def parse_xml(doc)
  doc.root.elements.each do |node|
    parse_tracks(node)
  end
end

def parse_tracks(node)
  if node.node_name.eql? 'kapitel'
    puts 'New Kapitel'
  end
end

我知道如何执行此代码:

ruby test.rb 

但是我怎样才能调用 def parse_file 呢?

4

3 回答 3

6

只需将您想要的任何内容添加到文件末尾即可。Ruby 脚本只是脚本,它们正在被解释:

…
end

parse_file   # ⇐ HERE YOU GO
于 2013-09-09T10:00:15.640 回答
3

您可以在test.rb文件末尾调用该方法:

def parse_file 
  # ...
end

parse_file

并运行它

$ ruby test.rb

或者保持文件原样,将其作为库需要并手动调用该方法:

$ ruby -r test.rb -e "parse_file"

您可以在调用脚本时将其作为参数传递,而不是对文件路径进行硬编码。可以通过ARGV数组访问参数:

def parse_file(file)
  doc = Nokogiri::XML(File.open(file))
  parse_xml(doc)
end

parse_file(ARGV.first)

现在您可以使用以下命令运行它:

$ ruby test.rb test.xml

另一种选择是使脚本可执行。添加shebang作为文件的第一行:

#!/usr/bin/env ruby

并设置执行标志:

$ chmod +x test.rb

现在您可以使用以下命令运行它:

$ ./test.rb test.xml
于 2013-09-09T10:17:42.433 回答
2

只需添加

parse_file

在你的 ruby​​ 文件的末尾

于 2013-09-09T10:00:22.723 回答