gpt4 book ai didi

ruby - 如何使用 XmlSimple 生成具有属性和文本节点的 XML 元素?

转载 作者:数据小太阳 更新时间:2023-10-29 02:58:26 26 4
gpt4 key购买 nike

我有一个听起来很基本的问题,但我还没有在任何地方找到解决方案。我正在使用 XmlSimple 的 Ruby 版本,特别是 xml_out 函数。

问题

我在输出具有一个属性节点和一个文本节点的元素时遇到问题。这是我想要的:

<lane id='1'>unchannelized</lane>

这是我目前得到的:

<lane id='1'>
<content>unchannelized</content>
</lane>

我已经尝试使用 xml_out 的“ContentKey”=>“内容”选项(除了“AttrPrefix”=> true),但产生了相同的结果。我也尝试过更改 ContentKey,区别相同。

相关代码

属性和文本节点被添加到数组中:

laneConfigArr << {"@id" => laneNo,  "content" => netsimLaneChannelizationCode(matchArr[matchIndex])}

实际生成的哈希值:

unhappyHash << {
#more stuff here,
"LaneConfig" => {"lane" => laneConfigArr},
#more stuff here
}

xml_out 调用 [已编辑]:

result["NetsimLinks"] = {"NetsimLink" => unhappyHash}
doc = XmlSimple.xml_out(result, {"AttrPrefix" => true, "RootName" => "CORSIMNetwork", "ContentKey" => "content"})

环境详情

  • 操作系统:Windows 7
  • ruby :1.9.3-p125
  • XmlSimple:1.0.13

到处看,似乎没有人遇到过这个问题。也许我遗漏了什么,或者这不能/不应该完成?

我非常感谢任何帮助。

最佳答案

XmlSimple 的好处在于它是可循环的:也就是说,您可以将所需的输出放入 xml_in,它会为您提供使用 xml_out 生成它所需的内容

让我们来看看吧。假设我们有以下简化的 XML:

require 'xmlsimple'

xml = %Q(
<CORSIMNetwork>
<lane id='1'>unchannelized</lane>
</CORSIMNetwork>
)

现在让我们看看 XmlSimple.xml_in(xml) 的结果:

{"lane"=>[{"id"=>"1", "content"=>"unchannelized"}]}

根没有了,因为我们没有指定 KeepRoot 选项,但除此之外它就是我们所期望的。

现在让我们对其执行 xml_out 指定 RootName 选项以取回根:

<CORSIMNetwork>
<lane id="1">unchannelized</lane>
</CORSIMNetwork>

看起来不错。我检查了 AttrPrefix 选项,除了在输入中要求 "@id" 而不是 "id" 键外,输出仍然相同。

产生正确输出的完整脚本:

require 'xmlsimple'

lane_config = [{ "@id" => 1, "content" => "unchannelized"}]
unhappy = {
"LaneConfig" => {"lane" => lane_config},
}

doc = XmlSimple.xml_out(unhappy, {"AttrPrefix" => true,
"RootName" => "CORSIMNetwork",
"ContentKey" => "content"
})
puts doc

输出:

<CORSIMNetwork>
<LaneConfig>
<lane id="1">unchannelized</lane>
</LaneConfig>
</CORSIMNetwork>

由于以上对我有用,我唯一能想到的是你的散列不能包含你认为它包含的内容。

关于ruby - 如何使用 XmlSimple 生成具有属性和文本节点的 XML 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9996884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com