加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何在XML中查找文本并使用Nokogiri显示其兄弟

发布时间:2020-12-17 02:31:20 所属栏目:百科 来源:网络整理
导读:我从REST API中获取了以下 XML: dataitems dataitem colour="null" value labelIntel/label count43/count /value value labelAMD/label count39/count /value value labelARM/label count28/count /value /dataitem/dataitems 我想在 label中搜索文本.标记
我从REST API中获取了以下 XML:

<dataitems>
  <dataitem colour="null">
     <value>
        <label>Intel</label>
        <count>43</count>
     </value>
     <value>
        <label>AMD</label>
        <count>39</count>
     </value>
     <value>
        <label>ARM</label>
        <count>28</count>
     </value>
  </dataitem>
</dataitems>

我想在< label>中搜索文本.标记并显示< count>的匹配值在一张桌子里.

在控制器中我有:@post_count = Nokogiri :: XML(Post.item_data.to_xml).

在视图中我不确定是否需要使用@ post_count.xpath或@ post_count.search.

有人可以指出我正确的方法和方法吗?

提前致谢.

解决方法

虽然我不确定您要查找哪些信息,但我有一些建议.

1)如果您在搜索之前知道元素中的值:

doc = Nokogiri.XML(open(source_xml))

# Assuming there is only one of each label
node = doc.xpath('//label[text()="Intel"]').first
count = node.next_element.text

# or if there are many of each label
nodes = doc.xpath('//label[text()="Intel"]')
nodes.each {|node|
  count = node.next_element.text
  # do something with count here
}

2)假设您事先不知道标签内的名称

doc = Nokogiri.XML(open(source_xml))
labels = {}
doc.xpath('//label').each {|node|
  labels[node.text] = node.next_element.text
}

# labels => {"Intel"=>"43","AMD"=>"39","ARM"=>"28"}

我个人更喜欢第二种解决方案,因为它为您提供了干净的哈希,但我更喜欢尽快使用哈希和数组.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读