国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Ruby - Ruby使用REXML庫來解析xml格式數(shù)據(jù)的方法

Ruby使用REXML庫來解析xml格式數(shù)據(jù)的方法

2020-05-08 10:28腳本之家 Ruby

這篇文章主要介紹了Ruby使用REXML庫來解析xml格式數(shù)據(jù)的方法,文章最后提及了REXML庫的使用相關(guān)安全問題可以注意一下,需要的朋友可以參考下

REXML 是一個完全用ruby寫的processor ,他有多種api,其中兩個經(jīng)典的api是通過DOM-like 和SAX-like 來進(jìn)行區(qū)分的。第一種是將整個文件讀進(jìn)內(nèi)存,然后存儲為一個分層的形式(也就是一棵樹了).而第二種是"parse as you go",當(dāng)你的文件很大,并且內(nèi)存受到限制的時候,比較適合用這種。
rexml具有如下特點:

  • 100%用ruby編寫
  • 可以用來解析SAX和DOM
  • 輕量,不足2000行代碼
  • 提供完整的API支持
  • ruby中內(nèi)置

下面我們來看看如何使用它,假設(shè)我們有如下xml文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<collection shelf="New Arrivals">
 <movie title="Enemy Behind">
 <type>War, Thriller</type>
 <format>DVD</format>
 <year>2003</year>
 <rating>PG</rating>
 <stars>10</stars>
 <description>Talk about a US-Japan war</description>
 </movie>
 <movie title="Transformers">
 <type>Anime, Science Fiction</type>
 <format>DVD</format>
 <year>1989</year>
 <rating>R</rating>
 <stars>8</stars>
 <description>A schientific fiction</description>
 </movie>
 <movie title="Trigun">
 <type>Anime, Action</type>
 <format>DVD</format>
 <episodes>4</episodes>
 <rating>PG</rating>
 <stars>10</stars>
 <description>Vash the Stampede!</description>
 </movie>
 <movie title="Ishtar">
 <type>Comedy</type>
 <format>VHS</format>
 <rating>PG</rating>
 <stars>2</stars>
 <description>Viewable boredom</description>
 </movie>
</collection>

解析DOM:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
require 'rexml/document'
include REXML
xmlfile = File.new("movies.xml")
xmldoc = Document.new(xmlfile)
root = xmldoc.root
puts "Root element : " + root.attributes["shelf"]
xmldoc.elements.each("collection/movie"){
 |e| puts "Movie Title : " + e.attributes["title"]
}
xmldoc.elements.each("collection/movie/type") {
 |e| puts "Movie Type : " + e.text
}
xmldoc.elements.each("collection/movie/description") {
 |e| puts "Movie Description : " + e.text
}

使用XPATH:

?
1
2
3
4
5
6
7
8
9
require 'rexml/document'
include REXML
xmlfile = File.new("movies.xml")
xmldoc = Document.new(xmlfile)
movie = XPath.first(xmldoc, "//movie")
p movie
XPath.each(xmldoc, "//type") { |e| puts e.text }
names = XPath.match(xmldoc, "//format").map {|x| x.text }
p names

以備不時之需!

PS:關(guān)于REXML的安全問題
Ruby官方網(wǎng)站在8月23日發(fā)布了安全通告:http://www.ruby-lang.org/en/news/2008/08/23/dos-vulnerability-in-rexml/,在Ruby當(dāng)前使用的XML解析庫REXML在解析具有嵌套遞歸元素的XML文件的時候,將會出現(xiàn)拒絕服務(wù)攻擊的缺陷,導(dǎo)致服務(wù)器資源耗盡!
凡是在Rails應(yīng)用程序當(dāng)中使用到了XML文件解析功能的都存在上述缺陷,需要進(jìn)行修復(fù)。在Rails當(dāng)中的修復(fù)辦法如下:
1、Rails2.0.2和以前的老版本
下載修復(fù)文件,拷貝到RAILS_ROOT/lib目錄下,并且在environment.rb當(dāng)中加入語句

?
1
require ‘rexml-expansion-fix'

2、Rails 2.1.0以上版本
下載修復(fù)文件,拷貝到RAILS_ROOT/config/initializers目錄下即可。

延伸 · 閱讀

精彩推薦
  • RubyCentOS中配置Ruby on Rails環(huán)境

    CentOS中配置Ruby on Rails環(huán)境

    經(jīng)過一個上午的折騰,終于把ROR環(huán)境在CentOS中搞定,繞了很多彎路,把文章寫下來總結(jié)一下 ...

    可樂加糖4762020-04-12
  • Ruby剖析 Ruby 訪問控制

    剖析 Ruby 訪問控制

    前面,我們說 Ruby 沒有函數(shù),只有方法.而且實際上有不止一種方法.這一節(jié)我們介紹 訪問控制 (accesscontrols). 想想當(dāng)我們在最高層而不是在一個類的定義里定義...

    ruby教程網(wǎng)3572020-04-08
  • RubyRuby設(shè)計模式編程中使用Builder建造者模式的實例

    Ruby設(shè)計模式編程中使用Builder建造者模式的實例

    這篇文章主要介紹了Ruby設(shè)計模式編程中使用Builder建造者模式的實例,建造者模式將一個復(fù)雜對象的構(gòu)造與它的表示分離,使同樣的構(gòu)建過程可以創(chuàng)建不同的表...

    范孝鵬2192020-05-07
  • RubyRuby簡潔學(xué)習(xí)筆記(一):字符串、數(shù)字、類和對象

    Ruby簡潔學(xué)習(xí)筆記(一):字符串、數(shù)字、類和對象

    這篇文章主要介紹了Ruby簡潔學(xué)習(xí)筆記(一):字符串、數(shù)字、類和對象,本文是學(xué)習(xí)筆記第一篇,需要的朋友可以參考下 ...

    腳本之家2472020-04-20
  • RubyRuby迭代器的7種技巧分享

    Ruby迭代器的7種技巧分享

    這篇文章主要介紹了Ruby迭代器的7種技巧分享,Ruby中的迭代器非常人性化,本文既是講解了7個技巧也是講解了7種迭代器,需要的朋友可以參考下 ...

    腳本之家4782020-04-20
  • RubyRuby環(huán)境下安裝使用bundler來管理多版本的gem

    Ruby環(huán)境下安裝使用bundler來管理多版本的gem

    這篇文章主要介紹了Ruby環(huán)境下安裝使用bundler來管理多版本的gem的方法,舉了Ruby On Rails中的應(yīng)用實例來進(jìn)行演示,需要的朋友可以參考下 ...

    日拱一卒4332020-05-10
  • RubyRuby進(jìn)行文件信息輸出實例代碼

    Ruby進(jìn)行文件信息輸出實例代碼

    Ruby進(jìn)行文件信息輸出實例代碼,數(shù)據(jù)是隨機的,所以每次的記錄都會不同。 ...

    ruby教程網(wǎng)2962020-04-10
  • Ruby簡要說明Ruby中的迭代器

    簡要說明Ruby中的迭代器

    這篇文章主要介紹了Ruby中的迭代器,迭代器的概念在動態(tài)語言的編程中十分重要,文章中介紹了Ruby中的each迭代器和collect迭代器,需要的朋友可以參考下 ...

    goldensun2772020-04-25
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 人人爱夜夜爽日日视频 | 欧美精品一区二区三区在线 | 久久国产亚洲精品 | 欧美人成在线观看 | 婷婷国产 | 成人免费在线电影 | 国产精品一区二区视频 | 国产精品三级久久久久久电影 | 五月婷婷激情网 | 久久久麻豆 | 国产欧美一区二区视频 | 爱色av| 成人日韩| 精品久久久中文字幕 | 亚州av影院| 黄色网页在线观看 | 男插女青青影院 | 国产精品久久久久久久久久久久久 | 黄网在线观看 | 欧美喷水 | 一级做a爰片性色毛片2021 | 日韩国伦理久久一区 | 国产精品久久久久久久久久久免费看 | 国产a视频 | 精品国产乱码久久久久久图片 | 亚洲国产精品欧美一二99 | 精品av| 香蕉av777xxx色综合一区 | 亚洲天堂一区在线 | 快色视频在线观看 | 这里只有精品国产 | 99re免费视频精品全部 | 国产一区二区三区免费观看 | 国产精品久久久久久久久久久久 | 人人澡人人爽 | 在线免费黄色 | 精品视频一区二区三区在线观看 | 亚洲免费精品 | 成人免费视频观看 | 日韩城人网站 | 精品一二三区 |