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"} 我个人更喜欢第二种解决方案,因为它为您提供了干净的哈希,但我更喜欢尽快使用哈希和数组. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |