【问题标题】:How do I parse a hash to XML using XmlSimple?如何使用 XmlSimple 将哈希解析为 XML?
【发布时间】:2011-05-17 13:15:45
【问题描述】:

我有一个哈希,我想使用 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>

在每个测试中合并每个散列不会起到作用,因为它会阻止最后一个散列(子根) 我说清楚了吗? simpleXML 不能解决问题还是我需要寻找其他解决方案?

【问题讨论】:

  • 请重新表述你的问题,很难说出你想要什么。
  • 需要循环播放时出现问题?你能说得更具体一点吗?
  • 抱歉,英语不好。我正在做一个自动化测试脚本,需要保存每个测试数据以供进一步检查。为了实现这一点,我的应用程序将每个测试循环(Junit...@test...@parametrization..知道吗?)保存在哈希上,在测试结束时,我需要将其保存为 XML。问题是我不能在哈希上重复“子根”名称(duhh),但我的 xml 必须具有相同的模式。 ....fields... .....fields.... 抱歉,但很难写清楚。
  • 尝试使用stackoverflow.com/questions/5193587/… 解决方案,但没有成功...更改了带有测试ID的字符串的子根文本...哈希填充正确但是当我转换它时..它会删除所有条目除了最后一个..

标签: ruby hash xml-parsing xml-simple


【解决方案1】:

感谢您的帮助...

我发现如果我将哈希的“实例”放入数组中,我不需要哈希键... 我可以使用相同的哈希名称,每个数组槽都保存我的哈希实例,而不是我可以调用 simpleXML 或 to_xml

不,我只需要弄清楚如何删除使 xml 变大的对象标签。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-26
    • 2013-04-16
    • 2013-01-06
    • 2019-03-31
    • 2015-05-12
    • 2014-04-27
    • 2013-04-25
    • 2019-04-04
    相关资源
    最近更新 更多