2014-12-05 89 views
2

我需要能够创建一个Ruby应用程序(如果可能,不需要Rails),该应用程序打开一个外部YAML文件,该文件中有超过104K行代码,从中读取并筛选出以下三件事情:如何读取互联网上的外部YAML文件并输出到XML

!ruby/object:EvtEvent 
!ruby/object:NwsPost 
!ruby/object:Asset 

,然后这些东西输出到会必须由Ruby程序建立一个XML文件。

  1. 我不清楚如何下手设置此功能,因为我只是一个初中级开发人员一年的经验。

  2. 虽然我发现堆栈溢出的东西,显示了使用引入nokogiri一个代码示例的这个片段,我不知道到底哪里把这个代码,我将不得不修改我的情况:

    require 'yaml' 
    require 'nokogiri' 
    
    yaml = "getOrderDetails: 
    Id: '114' 
    Name: 'XYZ'" 
    doc = YAML.load yaml 
    
    output = Nokogiri::XML::Builder.new do |xml| 
    xml.product{ 
    xml.id doc["getOrderDetails"]["Id"] 
    xml.name doc["getOrderDetails"]["Name"] 
    } 
    end 
    puts output.to_xml 
    #=> <?xml version="1.0"?> 
    #=> <product> 
    #=> <id>114</id> 
    #=> <name>XYZ</name> 
    #=> </product> 
    
  3. 我该如何编写init.rb文件来启动一个Ruby程序,该程序可以打开有问题的YAML文件,从中读取,然后将其输出到XML中?

  4. 我需要在我的lib文件夹中放置其他Ruby程序来处理这个任务吗?

+0

是的锡人,每个教程和指南可用于我。作为一名没有导师特权的jr开发者,或者有钱有钱买得起昂贵的训练营和课程,我一直在为此苦苦挣扎。 – 2014-12-05 23:46:55

回答

-1
  1. 的代码可以去的地方很方便。 Ruby对文件位置没有真正的期望;你只需运行它们。你的开发团队可能有指导方针,所以你需要和他们交谈。

  2. “init.rb”是文件的非描述性名称。尝试使用更能表明剧本目的的东西。

  3. 阅读用于此目的的删除文件很容易与OpenURI

    foo = open('http://domain.com/path/to/file.yaml').read 
    

    将返回文件的内容,并将它们存储在变量foo

  4. 的YAML的内容可以很容易地使用进行解析:

    yaml = YAML.load(foo) 
    

    此时haml将包含一个阵列或散列,然后可以正常访问。

    更有趣的是,一旦OpenURI被加载后,它会修补open方法,其中应该有可能做这样的事情:

    require 'open-uri' 
    yaml = YAML.load_file('http://domain.com/path/to/file.yaml') 
    

    YAML必须打开一个文件,从加载磁盘,这正是load_file通常所做的,在OpenURI做了它的魔法之后,YAML类应该继承了这种魔力。我没有测试过,但它应该工作。

  5. Nokogiri的Builder接口可能是一个好方法。

+0

我是否需要制作一个像Rails应用程序中自动生成的Gemfile来执行此操作,Tin Man? – 2014-12-05 23:51:39

相关问题