使用Ruby来处理文本的教程

2019-09-25 09:44:57丽君

如您所见,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)。

下面我们具体介绍操作过程。