成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > Ruby中XML格式數(shù)據(jù)處理庫REXML的使用方法指南

Ruby中XML格式數(shù)據(jù)處理庫REXML的使用方法指南

熱門標(biāo)簽:樂昌電話機(jī)器人 北京語音電銷機(jī)器人價(jià)格 邯鄲外呼調(diào)研線路 武漢呼叫中心外呼系統(tǒng)線路商 真人語音電銷機(jī)器人系統(tǒng) 開封百應(yīng)電銷機(jī)器人聯(lián)系方式 買了外呼系統(tǒng)不想用了怎么辦 電話機(jī)器人電話卡封號怎么辦 浦東上海400開頭的電話申請

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

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

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

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

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

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

請注意,XPath 使用基于 1 的索引,不象 Ruby 和 Python 數(shù)組使用基于 0 的索引。換句話說, 它仍是我們正在檢查其所在城市的同一個(gè)人。通過查看 REXML 請注意,XPath 使用基于 1 的索引,不象 Ruby 和 Python 數(shù)組使用基于 0 的索引。換句話說, 它仍是我們正在檢查其所在城市的同一個(gè)人。通過查看
用 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 不必只與一個(gè)元素匹配。我們已在定義 persons 數(shù)組時(shí)看見過,但另一個(gè)示例強(qiáng)調(diào)了這一點(diǎn):
將多個(gè)元素與 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'/>

與此相反, .elements 屬性的索引只產(chǎn)生 第一個(gè)匹配的元素:
當(dāng) XPath 只匹配第一次出現(xiàn)時(shí)

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'/>

也可以通過 REXML 中的 XPath 類使用 XPath 地址, 它具有諸如 .first() 、 .each() 和 .match() 這樣的方法。
REXML 元素的一個(gè)獨(dú)特的慣用方法是 .each 迭代器。雖然 Ruby 有一個(gè)可對集合進(jìn)行操作的循環(huán)結(jié)構(gòu) for , 但 Ruby 程序員通常更喜歡使用迭代器方法來將控制傳遞給代碼塊。下面的兩種結(jié)構(gòu)是等價(jià)的, 但第二種結(jié)構(gòu)有更為自然的 Ruby 感覺:
通過在 REXML 中匹配 XPath 進(jìn)行迭代

ruby> for addr in addrbook.elements.to_a("http://address[@state='CA']")
  |  puts addr.attributes["city"]
  | end
Sacramento
Los Angeles
ruby> addrbook.elements.each("http://address[@state='CA']") {
  |  |addr| puts addr.attributes["city"]
  | }
Sacramento
Los Angeles

以流方式使用 REXML
出于“正好夠用”的目的, REXML 的樹方式可能是 Ruby 語言最簡單的方法。 但 REXML 還提供了一種流方式,它象是 SAX 的更輕量級的變體。 正如使用 SAX 一樣, REXML 沒有向應(yīng)用程序程序員提供來自 XML 文檔的缺省數(shù)據(jù)結(jié)構(gòu)。 相反,“l(fā)istener”或“handler”類負(fù)責(zé)提供響應(yīng)文檔流中各種事件的一組方法。 以下是常用集合:開始標(biāo)記、結(jié)束標(biāo)記、遇到的元素文本等等。
雖然流方式遠(yuǎn)遠(yuǎn)沒有象以樹方式工作那樣容易,但通常它的速度要快很多。 REXML 教程聲稱流方式的速度要快 1500倍。 雖然我沒有嘗試過對它進(jìn)行基準(zhǔn)測試,但我猜想這是一種有限的情況(我的小示例在樹方式中也是瞬間完成的)。 總之,如果速度要緊,那么速度上的差異很可能是顯著的。
讓我們研究一個(gè)非常簡單的示例,它所做的事情與上面的“列出加州城市”示例相同。 對它進(jìn)行擴(kuò)展以用于復(fù)雜的文檔處理相對比較簡單:
REXML 中 XML 文檔的流處理

ruby> require "rexml/document"
ruby> require "rexml/streamlistener"
ruby> include REXML
ruby> class Handler
  |  include StreamListener
  |  def tag_start name, attrs
  |    if name=="address" and attrs.assoc("state")[1]=="CA"
  |     puts attrs.assoc("city")[1]
  |    end
  |  end
  | end
ruby> Document.parse_stream((File.new "address.xml"), Handler.new)
Sacramento
Los Angeles

流處理示例中要注意的一件事情是,標(biāo)記屬性被作為一組數(shù)組傳遞, 它要處理的工作比起散列要稍微多一點(diǎn)(但可能在庫中創(chuàng)建會(huì)更快)。

編碼問題
REXML所有文本節(jié)點(diǎn)中都是以UTF-8編碼的,所有調(diào)用的代碼都要注意這一點(diǎn),在程序中,傳遞給REXML的字符串必須是經(jīng)過UTF-8編碼的。

REXML不可能總是正確猜測出你的文本的編碼方式,所以它總是假定為UTF-8編碼。同時(shí),如果你試圖添加其他編碼方式的文本,REXML不會(huì)發(fā) 出警告。添加者必須保證自己添加的是UTF-8的文本。如果添加標(biāo)準(zhǔn)的ASCII 7位編碼,是沒有關(guān)系的。如果使用ISO8859-1文本,必須在添加之前轉(zhuǎn)換為UTF-8編碼??梢允褂胻ext.unpack("C").pack("U")。變更編碼進(jìn)行輸出,只有Document.write()和Document.to_s() 支持。如果需要輸出特定編碼的節(jié)點(diǎn),必須用Output把輸出對象包裝起來。

e = Element.new "a/>"
e.text = "f\xfcr"  # ISO-8859-1 '??'
o = ''
e.write( Output.new( o, "ISO-8859-1" ) )

可以向Output傳遞任何支持的編碼。

您可能感興趣的文章:
  • Ruby中使用Nokogiri包來操作XML格式數(shù)據(jù)的教程
  • 實(shí)例解析Ruby程序中調(diào)用REXML來解析XML格式數(shù)據(jù)的用法
  • Ruby使用REXML庫來解析xml格式數(shù)據(jù)的方法
  • Ruby程序中創(chuàng)建和解析XML文件的方法
  • 在Ruby中處理XML和XSLT以及XPath的簡單教程
  • Ruby的XML格式數(shù)據(jù)解析庫Nokogiri的使用進(jìn)階

標(biāo)簽:自貢 河北 鄂州 六安 松原 石嘴山 宜春 淄博

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Ruby中XML格式數(shù)據(jù)處理庫REXML的使用方法指南》,本文關(guān)鍵詞  Ruby,中,XML,格式,數(shù)據(jù)處理,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Ruby中XML格式數(shù)據(jù)處理庫REXML的使用方法指南》相關(guān)的同類信息!
  • 本頁收集關(guān)于Ruby中XML格式數(shù)據(jù)處理庫REXML的使用方法指南的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    日韩免费视频网站| 久久99精品久久久久久动态图| 精品亚洲男同gayvideo网站| 午夜精品福利在线| 69久久久久久| 亚洲精品性视频| 日韩美女视频一区二区在线观看| 久久伊人精品视频| 一区二区视频在线播放| 玛雅亚洲电影| 欧美中文高清| 国产av精国产传媒| 网红女主播少妇精品视频| 欧美一区高清| 在线免费av一区| 日本在线中文字幕一区二区三区| 婷婷激情五月综合| 国产成人精品一区二区三区福利| 亚洲一区二区免费| 四虎精品成人免费网站| 亚洲欧美色图小说| 麻豆国产精品va在线观看不卡| 亚洲天堂影院在线观看| 国产黄色一级电影| 国产三级国产精品| 亚洲午夜无码av毛片久久| 国产乱人伦偷精品视频不卡| 日本一区二区三区四区在线视频| 精品人妻在线视频| 一区二区三区视频在线观看免费| 911精品产国品一二三产区| 黄色一级视频片| 日韩成人精品视频| 超碰在线94| 一区二区三区四区免费观看| 一本久道中文字幕精品亚洲嫩| 国产精品人成电影| 日韩精品一区二区三区国语自制| 国产精品三级美女白浆呻吟| 日本不卡不卡| 伊人久久大香线蕉综合影院首页| 亚洲天堂av在线| 激情综合网天天干| 欧美肥臀大乳一区二区免费视频| 成人免费黄色网页| 性生活一级大片| 开心激情五月网| 蜜桃一区二区三区在线| 在线播放高清视频www| 日本精品性网站在线观看| 中国特黄一级片| 人人妻人人澡人人爽人人欧美一区| 免费在线成人激情电影| 一区二区三区免费看| 国产免费一区二区三区视频| 中文字幕三级电影| japanese色国产在线看视频| 中文字幕第三页| 久久久精品日本| 李宗瑞91在线正在播放| 91国产在线精品| 欧美捆绑视频| 欧美精品在欧美一区二区| 国产欧美亚洲精品a| 久久91精品国产91久久久| 99热国产精品| 大陆精大陆国产国语精品| 日韩影片中文字幕| 卡通欧美亚洲| 亚洲免费精品| 欧美大电影免费观看| 国产精品国精产品一二| 极品白嫩少妇无套内谢| 中国av一区二区三区| aa级大片免费在线观看| 久久―日本道色综合久久| 国产xxx精品视频大全| 欧美激情一区二区三区全黄| 麻豆资源在线| 日本不卡一区在线| 欧美日韩精品欧美日韩精品一综合| 洋洋成人永久网站入口| 丝袜美腿综合| h视频免费高清在线观看| 77777少妇光屁股久久一区| 久久久久久久无码| 欧美激情不卡| 精品国产一区二区三区四区四| 亚洲视屏在线播放| 欧美精品一区二区三区视频| 在线播放av片| 日韩视频在线一区二区| 欧美黄色网页| 97久久天天综合色天天综合色hd| a级毛片免费高清视频| 精品999日本久久久影院| 俄罗斯嫩小性bbwbbw| 亚洲免费视频一区| 成人小视频在线看| 色综合久久综合网97色综合| 成人开心激情| 国产青春久久久国产毛片| 人人超碰91尤物精品国产| 羞羞的视频网站| 伊人久久一区二区| 久久精品国产亚洲7777| 91天堂在线| 国产高清亚洲一区| 国产精一区二区三区| 美日韩免费视频| 精品国产大片大片大片| 天天影视久久综合| 亚洲午夜激情在线| 中文在线第一页| 任你躁在线精品免费| 可以免费观看av的网站| 欧美一级电影免费在线观看| 国产你懂的在线观看| 国产成人免费在线观看不卡| 99re6在线精品视频免费播放| 国产噜噜噜噜久久久久久久久| 在线资源av| 欧美一级高清片在线观看| 日本一级特级毛片视频| 禁久久精品乱码| 国产精品美女久久久久av福利| 色一情一乱一伦一区二区三欧美| 91精品国产91久久久久久| 在线观看 中文字幕| 蜜桃视频在线一区| 日韩av手机在线观看| 久久免费的精品国产v∧| 日韩二区在线观看| 亚洲第一香蕉视频| 国产一区二区三区在线播放免费观看| 国产精品theporn| 波多野结衣在线高清| jizz免费看| 精品免费一区二区三区| 岛国视频一区免费观看| 欧美午夜无遮挡| 国产日本韩国在线播放| 亚洲第一狼人社区| 日韩视频在线观看免费| 一区二区三区四区| 牛牛精品视频在线| 日韩一区二区中文字幕| 蜜桃成人精品| 天天操天天干天天操天天干| 黄色成人在线网址| 亚洲免费成人| 国产在线视频精品一区| 国产午夜久久久| 一二三区高清| 精品国产不卡一区二区| 欧美激情在线精品一区二区三区| 黄色片子在线观看| 天天操天天摸天天爽| av女优在线播放| 亚洲国产日韩精品| 在线免费黄色网| 国产又粗又黄视频| 欧美成人在线直播| 日韩精品一区二| 久久久久久国产精品一区| 亚洲美女尤物影院| 久久婷婷成人综合色| 国产jzjzjz丝袜老师水多| 很黄很a的视频| 91影院在线播放| 日韩女优一区二区| 在线观看中文字幕视频| 久久不射网站| 久久在线观看视频| 国产亚洲高清一区| 亚洲国产成人爱av在线播放| 成人午夜剧场免费观看完整版| 欧美一级特黄高清视频| 欧美婷婷久久五月精品三区| 蜜臀久久99精品久久久画质超高清| 日韩最新av| 日本中文字幕免费在线观看| 日韩成人黄色片| 国产稀缺精品盗摄盗拍| 国产免费网址| 一路向西2在线观看| 国产www网站| 日韩欧美在线免费| 欧美欧美一区二区| 最新精品国产| 国内精品国产成人国产三级粉色| 久久这里有精品15一区二区三区| 国产情侣小视频| 欧美xxxx性xxxxx高清| 99视频在线精品国自产拍免费观看| 亚洲欧美激情另类校园| 蜜臀av一区二区在线免费观看| 麻豆视频在线| 中文字幕在线视频区| 久久久久免费| 国产一区二区三区视频免费观看| 国产精品一区二区三区免费观看| 黄色www视频| 国产精品.www| 中文天堂资源在线| 国产精品久久毛片a| 粉嫩av四季av绯色av第一区| 国产免费黄色| 在线观看久久久久久| 中文字幕在线观看免费| 视频在线观看99| 久久精品免费一区二区三区| 国内一卡2卡三卡四卡在线| 男人的天堂成人| 欧美一级大胆视频| 天堂av在线网| 狠狠色2019综合网| 欧美性猛交xxxx黑人交| 久久久久女教师免费一区| 午夜xxxxx| 中文字幕有码热在线视频| 毛片不卡一区二区| 人妻无码中文字幕免费视频蜜桃| 国产又粗又爽| 韩国黄色一级大片| 黑巨人与欧美精品一区| 中文字幕免费观看一区| 国产在线播放你懂的| 麻豆av免费在线观看| 成年网站免费| 欧洲永久精品大片ww免费漫画| 黄色一级在线视频| 国产一区二区三区蝌蚪| 少妇激情一区二区三区| 人妻换人妻仑乱| 老司机午夜精品视频| 91视频网入口| 韩国黄色一级大片| 国产一区二区在线看| 国产一区精品在线| jizz免费观看视频| 色欲av伊人久久大香线蕉影院| 三上亚洲一区二区| 男人皇宫亚洲男人2020| 97色伦图片97综合影院| 最新亚洲激情| 国产一级揄自揄精品视频| 夜夜春亚洲嫩草影视日日摸夜夜添夜| √天堂资源在线| 欧美日韩视频一区二区三区| 91精品国产高清久久久久久91| 美女一区二区在线观看| 91麻豆成人精品国产免费网站| 嫩草影院入口一二三免费| 久久成人在线| www.av中文字幕| 神马久久桃色视频| 国产精品久久久久久久久久三级| eeuss在线播放| 亚洲色图20p| 欧美性受xxxx黑人xyx性爽| 日韩在线天堂| av电影在线免费| 亚洲黄色免费三级| 欧美午夜视频在线| 亚洲小说春色综合另类网蜜桃| 国产绿帽一区二区三区| 九七电影韩国女主播在线观看| 欧美精品久久久久久久久46p| 欧美中文在线观看| 一区二区不卡在线视频 午夜欧美不卡'| 2020中文字幕在线| 国产欧美日韩一区二区三区在线观看| av日韩一区二区三区| 日本jizzcom| 亚洲国产成人精品一区二区三区| 一级黄色片日本| 真实国产乱子伦精品一区二区三区| 精品美女调教视频| 伊人久久久久久久久久久久久| 国产免费黄网站| 黄网免费视频| 久久久国产一区| 91精品国产91综合久久蜜臀| 国产又黄又爽又无遮挡| 又爽又大又黄a级毛片在线视频| 在线播放国产精品| 麻豆视频在线免费观看| 色婷婷综合久色| 精品一区二区三区五区六区七区| 欧美精品国产精品久久久| 日韩电影在线观看中文字幕| av福利导福航大全在线| 精品在线小视频| 九一九一国产精品| 日韩精品国产精品| 亚洲人成人99网站| 2021年精品国产福利在线| 成人性片免费| 九色国产蝌蚪| 三区四区在线观看| 日产欧产美韩系列久久99| 亚洲欧美日韩天堂一区二区| 国产自摸综合网| 欧美日韩国产精品一区二区不卡中文| 国产网站在线播放| 成人黄色一级大片| 青青国产在线观看| 污视频网站免费观看| 久久久久成人片免费观看蜜芽| 国产真实夫妇交换视频| 亚洲蜜桃精久久久久久久久久久久| 日韩激情毛片| 久久嫩草捆绑紧缚| 免费看一级大片| 欧美偷拍自拍| 日韩欧美久久久| 日韩av一区二区三区四区| 在线观看黄网站免费继续| 国产黑人绿帽在线第一区| 俄罗斯xxxx性全过程| 欧美一级欧美一级在线播放| 国产精品区一区二区三含羞草| www.超碰com| 久久99精品久久久久久三级| 精品日韩在线| 国产精选在线视频拍拍拍| 国产农村妇女毛片精品|