国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Ruby中XML格式數據處理庫REXML的使用方法指南

2019-10-26 19:29:06
字體:
來源:轉載
供稿:網友

以樹方式使用 REXML
REXML 的目的是 正好夠用。在最大程度上,它能很好地完成任務。 實際上, REXML 支持兩種不同樣式的 XML 處理 ― “樹”和“流”。 第一種樣式是 DOM 所嘗試要做的更簡單的版本;第二種樣式是 SAX 所嘗試要做的更簡單的版本。 讓我們先研究樹樣式。假設我們要提取上一個示例中的同一個地址簿文檔。 下面的示例來自我所創建的經修改的 eval.rb ; 標準 eval.rb (鏈接到 Ruby 教程)可以根據對復雜對象的表達式求值顯示非常長的計算結果 ― 我的 eval.rb 在沒有錯誤發生的情況下不作出反應:
如何使用 REXML 來引用嵌套數據

ruby> require "rexml/document"ruby> include REXMLruby> addrbook = (Document.new File.new "address.xml").rootruby> persons = addrbook.elements.to_a("http://person")ruby> puts persons[1].elements["address"].attributes["city"]New York

這個表達式很普通。 .to_a() 方法創建文檔中所有 <person> 元素的數組,在其它命名中它可能是有用的。 元素有點象 DOM 節點,但它其實更接近于 XML 本身(而且使用起來也更簡單)。 .to_a() 的參數是 XPath,在這種情況下,可以標識文檔中任何地方的所有 <person> 元素。如果我們只需要第一層上的元素,可以使用:
創建匹配元素的數組

ruby> persons = addrbook.elements.to_a("/addressbook/person")

我們甚至可以更直接地將 XPath 用作 .elements 屬性的重載索引。例如:
使用 REXML 來引用嵌套數據的另一種方法

ruby> puts addrbook.elements["http://person[2]/address"].attributes["city"]New York

請注意,XPath 使用基于 1 的索引,不象 Ruby 和 Python 數組使用基于 0 的索引。換句話說, 它仍是我們正在檢查其所在城市的同一個人。通過查看 REXML 請注意,XPath 使用基于 1 的索引,不象 Ruby 和 Python 數組使用基于 0 的索引。換句話說, 它仍是我們正在檢查其所在城市的同一個人。通過查看
用 REXML 顯示元素的 XML 源代碼

ruby> puts addrbook.elements["http://person[2]/address"]<address city='New York' street='118 St.' number='344' state='NY'/>ruby> puts addrbook.elements["http://person[2]/contact-info"]<contact-info> <email address='robb@iro.ibm.com'/> <home-phone number='03-3987873'/></contact-info>

此外,XPath 不必只與一個元素匹配。我們已在定義 persons 數組時看見過,但另一個示例強調了這一點:
將多個元素與 XPath 匹配

ruby> puts addrbook.elements.to_a("http://person/address[@state='CA']")<address city='Sacramento' street='Spruce Rd.' number='99' state='CA'/><address city='Los Angeles' street='Pine Rd.' number='1234' state='CA'/>            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上高县| 壶关县| 濮阳市| 治多县| 宁陕县| 老河口市| 同心县| 耒阳市| 北流市| 定西市| 滕州市| 繁峙县| 蒙自县| 韶关市| 二连浩特市| 镇巴县| 罗源县| 永登县| 姚安县| 惠安县| 德化县| 安吉县| 鄂伦春自治旗| 同德县| 兴城市| 禄劝| 镇沅| 遂川县| 福清市| 紫云| 大冶市| 右玉县| 从江县| 天门市| 乌拉特前旗| 莒南县| 奇台县| 武乡县| 浏阳市| 改则县| 寿宁县|