2016-11-14 47 views
1

我需要生成測試結果與下一個字段簡單的文件:寫入陣列XML紅寶石

Total N 
Pass N 
Fail N 

Failed: testName1 
... 
Failed: testNameN 

我用引入nokogiri編寫XML文件。 對於第一3個字段我有下一個代碼:

xml = Nokogiri::XML::Builder.new { |xml| 
xml.body do 
    xml.Total total 
    xml.Pass pass 
    xml.Fail fail 
    end 
}.to_xml 

我有失敗的測試名稱陣列。我需要迭代思考該數組,並使用nokogiri將每個失敗的測試名稱寫入此xml文件。如何做到這一點? 我想是這樣的:

<failed> testname1 </failed> 
<failed> testname2 </failed> 
<failed> testnameN </failed> 
+1

您目前的解決方案有什麼問題? – Kris

回答

0

的幾個注意事項:

fail是一個代名詞raise,並且不應該被用來作爲變量名。

如果您使用xml作爲Nokogiri :: XML :: Builder的String和Builder塊內使用的綁定變量,可能會造成混淆。

require 'nokogiri' 

total = 5 
pass_count = 3 
fail_count = 2 

failed_tests = ["test_name_1", "test_name_3"] 

xml_content = Nokogiri::XML::Builder.new { |xml| 
    xml.body do 
    xml.Total total 
    xml.Pass pass_count 
    xml.Fail fail_count 

    xml.failed do 
     failed_tests.each do |failed_test| 
     xml.failed failed_test 
     end 
    end 

    end 
}.to_xml 

puts xml_content 

# <?xml version="1.0"?> 
# <body> 
# <Total>5</Total> 
# <Pass>3</Pass> 
# <Fail>2</Fail> 
# <failed> 
# <failed>test_name_1</failed> 
# <failed>test_name_3</failed> 
# </failed> 
# </body> 
+0

如何在我的xml初始化中設置xml的編碼? –

+0

'Nokogiri :: XML :: Builder.new(:encoding =>'UTF-8')'{... –