0

SimpleXML を使用して 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>

それは問題なく、魅力のように機能しますが、ループする必要がある場合に問題があります。各テストでループし、テストデータをハッシュに保存する自動テストを実行しています。テストの最後までに、それを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 最後のハッシュ (サブルート) を防ぎます。simpleXML ではうまくいかないのでしょうか、それとも別の解決策を探す必要がありますか?

4

1 に答える 1

0

助けてくれてありがとう...

配列内にハッシュの「インスタンス」を配置する場合、ハッシュキーは必要ないことがわかりました...同じハッシュ名を使用できます。各配列スロットは、simpleXMLまたはto_xmlを呼び出すことができるよりもハッシュのインスタンスを保存します

いいえ、xml を大きくするオブジェクト タグを削除する方法を理解する必要があります。

于 2011-05-19T17:26:16.613 に答える