gpt4 book ai didi

ruby - 循环遍历 XML 以在 Ruby 中创建哈希数组

转载 作者:数据小太阳 更新时间:2023-10-29 08:39:45 24 4
gpt4 key购买 nike

我有以下 XML

<CallResult>
<Success>true</Success>
<Result>
<ZoneInfo>
<Id>3</Id>
<Name>test-room</Name>
<NId>sdfsdg</NId>
</ZoneInfo>
<ZoneInfo>
<Id>16</Id>
<Name>Dynamic</Name>
<NId>sadadrwed543th</NId>
</ZoneInfo>
<ZoneInfo>
<Id>32</Id>
<Name>lobby</Name>
<NId>ssdfrgfdfg</NId>
</ZoneInfo>
<ZoneInfo>
<Id>33</Id>
<Name>conf</Name>
<NId>sdfsfewr232f</NId>
</ZoneInfo>
</Result>
<Message>Success</Message>
</CallResult>

我正在尝试解析 XML,以便每个不同的“ZoneInfo”属性都是数组中的一个散列。

例如

Zones[0] = Hash[Id => 32, Name => lobby, NId => ssdfrgfdfg]

Zones[1] = Hash[Id => 33, Name => conf, NId => sdfsfewr232f]等等……

我有限的 XML 解析知识大有用武之地。我真正知道的是如何提取单个元素。例如

doc = REXML::Document.new(xmlData)
doc.elements.each("CallResult/Success") do |ele|
p ele.text;
end

有人可以提供更多有关如何循环仅从每个“ZoneInfo”元素中提取信息的信息吗?

谢谢

最佳答案

我使用另一个 gem 'nokogiri',它可能是现在解析 HTML/XML 的最佳 gem。

require 'nokogiri'

str = "<CallResult> ......"
doc = Nokogiri.XML(str)
Zones = []
doc.xpath('//ZoneInfo').each do |zone|
Zones << { "Id" => zone.xpath('Id').text, "Name" => zone.xpath('Name').text, "NId" => zone.xpath("NId").text}
end

关于ruby - 循环遍历 XML 以在 Ruby 中创建哈希数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12109491/

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