首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby -使用REXML查找元素

Ruby -使用REXML查找元素
EN

Stack Overflow用户
提问于 2012-07-03 16:32:39
回答 2查看 6.4K关注 0票数 1

我有一个XML文件,该文件保存了特定城市的零售商店及其位置的信息,但我在从中检索数据时遇到了一些困难。问题是,我可以通过循环查找名称元素,找到它们的名称,但我不知道如何获得相应的地址,一旦我找到我想要的商店。有人知道怎么做吗?我使用REXML作为我的主要XML模块。以下是我的XML文件和代码的样子

XML:

代码语言:javascript
复制
<stores>
  <store>
    <name>Supermarket</name>
    <address>2136 56th Avenue</address>
  </store>
  <store>
    <name>Convenience Store</name>
    <address>503 East Avenue</address>
  </store>
  <store>
    <name>Pharmacy</name>
    <address>212 Main Street</address>
  </store>
</stores>

Ruby:

代码语言:javascript
复制
xml_file.elements.each('stores/store/name') do |name|
  if input == name
    print name + "\n"
    #code to retrieve the address
    print address + "\n\n"
  end
end
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-03 17:06:06

代码语言:javascript
复制
xml_file = Document.new File.new("myxml.xml")

xml_file.elements.each("stores/store") do |element| 
  if element.attributes["name"] == input
    puts element.attributes["address"]
  end
end

属性用于

代码语言:javascript
复制
<store store_name="mystore" 

要获得

代码语言:javascript
复制
element.attributes["store_name"]

编辑,对不起,试试这个

代码语言:javascript
复制
xml_file.elements.each("stores/store") do |element| 
  if element.name.text == input
    puts element.address.text
  end
end

基于注释,正确的语法是dialog.elements['name'].text

票数 3
EN

Stack Overflow用户

发布于 2012-07-03 17:39:09

这是我的想法。“//姓名/.”选择所有“name”节点的父节点。if语句根据输入检查name节点的文本(本例中为matched_names)。显示或存储名称和地址数据,就像在该块的其余部分中显示或存储的那样:

代码语言:javascript
复制
matched_names = ['Convenience Store', 'Pharmacy']

doc.elements.each('//name/..') do |parent|
  if (matched_names.include? parent.elements['name/text()'].to_s)
    puts parent.elements['name']
    puts parent.elements['address']
  end
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11315295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档