2014-12-05 42 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

相關問題