如您所见,Ruby 提供一个强大的模块来处理 CSV 文件和数据。
处理 XML 文件
对于 XML 文件,Ruby 提供一个名为 REXML 的强大的内置库。这个库可以用于读取和解析 XML 文档。
查看以下 XML 文件并试图用 Ruby 和 REXML 来解析它。
下面是一个简单的 XML 文件,列示一个在线购物中心的典型购物车中的内容。它拥有以下元素:
cart —— 根元素 user —— 购货用户 item —— 用户添加到购物车中的商品项 id, price 和 quantity —— 项目的子元素清单 8 展示了这个 XML 的结构:
清单 8. 处理 XML 文件:示例 XML 文件
<cart id="userid"> <item code="item-id"> <price> <price/unit> </price> <qty> <number-of-units> </qty> </item> </cart>
从 下载 部分获取这个示例 XML 文件。现在,加载这个 XML 文件并使用 REXML 解析文件树。
清单 9. 处理 XML 文件:解析 XML 文件
require 'rexml/document'
include REXML
file = File.new('shoppingcart.xml')
doc = Document.new(file)
root = doc.root
puts ""
puts "Hello, #{root.attributes['id']}, Find below the bill generated for your purchase..."
puts ""
sumtotal = 0
puts "-----------------------------------------------------------------------"
puts "ItemttQuantityttPrice/unitttTotal"
puts "-----------------------------------------------------------------------"
root.each_element('//item') { |item|
code = item.attributes['code']
qty = item.elements["qty"].text.split(' ')
price = item.elements["price"].text.split(' ')
total = item.elements["price"].text.to_i * item.elements["qty"].text.to_i
puts "#[code]tt #{qty}tt #{price}tt #{total}"
puts ""
sumtotal += total
}
puts "-----------------------------------------------------------------------"
puts "tttttt Sum total : " + sumtotal.to_s
puts "-----------------------------------------------------------------------"
清单 10 显示输出。
清单 10. 处理 XML 文件:解析 XML 文件输出
Hello, santhosh, Find below the bill generated for your purchase...
-------------------------------------------------------------------------
Item Quantity Price/unit Total
-------------------------------------------------------------------------
CS001 2 100 200
CS002 5 200 1000
CS003 3 500 1500
CS004 5 150 750
-------------------------------------------------------------------------
Sum total : 3450
--------------------------------------------------------------------------
清单 9 解析这个购物车 XML 文件并生成一个账单,该账单显示项目合计和采购总计(见 清单 10)。
下面我们具体介绍操作过程。










