2011-05-17 50 views
0

我有一個哈希值,我想使用SimpleXML解析到XML,但還有一招,我不知道如何處理:如何使用XmlSimple將哈希解析爲XML?

我的哈希看起來像:

require 'xmlsimple' 
test = { "subroot" => { 
    field1 => {'var1' = ['xyz'], 'var2' = ['yyyy']}, 
    field2 => {'var1' = ['xyz'], 'var2' = ['yyyy']}, 
    field3 => {'var1' = ['xyz'], 'var2' = ['yyyy']}, 
    'id' = 'xxxxxx'} } 

我解析它使用XML:

XmlSimple.xml_out(teste, 'RootName' => 'root') 

導致:

<cenario> 
    <subroot id="xxxxxx"> 
    <field1> 
     <var1>xyz</var1> 
     <var2>yyyy</var2> 
    </field1> 
    <field2> 
     <var1>xyz</var1> 
     <var2>yyyy</var2> 
    </field2> 
    <field3> 
     <var1>xyz</var1> 
     <var2>yyyy</var2> 
    </field3> 
    </subroot> 
</cenario> 

沒關係,並且像魅力一樣工作,但是當我需要循環時存在問題。 Im做一個自動化測試,每個測試循環,並保存在一個哈希和我需要將其保存在一個XML測試結束測試數據,我需要得到的東西是這樣的:

<cenario> 
     <subroot id="xxxxxx"> 
     <field1> 
      <var1>xyz</var1> 
      <var2>yyyy</var2> 
     </field1> 
     <field2> 
      <var1>xyz</var1> 
      <var2>yyyy</var2> 
     </field2> 
     <field3> 
      <var1>xyz</var1> 
      <var2>yyyy</var2> 
     </field3> 
     </subroot> 
     . 
     . 
     . 
     <subroot id="xxxx10x"> 
     <field1> 
      <var1>xyz</var1> 
      <var2>yyyy</var2> 
     </field1> 
     <field2> 
      <var1>xyz</var1> 
      <var2>yyyy</var2> 
     </field2> 
     <field3> 
      <var1>xyz</var1> 
      <var2>yyyy</var2> 
     </field3> 
     </subroot> 
    </cenario> 

在每個測試中合併每個哈希將不會執行這個技巧cz它會阻止最後一個哈希(subroot) 我是否讓自己清楚了? 不能simpleXML做伎倆還是我需要尋找另一種解決方案?

+0

請更改你的問題,很難說出你想要的。 – tokland 2011-05-17 14:15:27

+0

當你需要循環時有問題嗎?你能更具體一點嗎? – 2011-05-17 14:18:41

+0

對不起,英語不好。我在做一個自動測試腳本,需要保存每個測試數據以供進一步檢查。 爲了做到這一點,我的應用程序保存每個測試循環(Junit ... @test ... @ parametrization.got它?)在一個哈希上,並在測試結束時,我需要將它保存爲XML。 問題是,我不能重複哈希(duhh)上的「subroot」名稱,但我的xml必須具有相同的模式。 ....字段... ..... fields .... 對不起,但它很難寫明確下來。 – 2011-05-18 19:03:52

回答

0

THKS的幫助...

我想通了,我不需要哈希鍵,如果我把一個哈希的「實例」一個數組中...... 我可以使用相同的哈希的名字,每個陣列插槽保存我的散列實例比我可以調用simpleXML或to_xml

不,我只需要弄清楚如何刪除使XML更大的對象標記。