Tutorial Ruby XML, XSLT dan XPath Tutorial Terbaik Pada tahun 2024, Dalam tutorial ini Anda dapat mempelajari Apa XML?,XML parser dan struktur API,Ruby untuk mengurai dan membuat XML,DOM parser,parser SAX,XPath dan Ruby,XSLT dan Ruby,informasi lebih lanjut,
Hal ini mengacu pada Extensible Markup Language XML (eXtensible Markup Language).
Extensible Markup Language, subset dari Standard Generalized Markup Language, sebuah metode untuk menandai dokumen elektronik memiliki bahasa markup terstruktur.
Hal ini dapat digunakan untuk menandai data, mendefinisikan jenis data, adalah teknologi yang memungkinkan pengguna untuk menentukan bahasa markup sumber bahasa mereka sendiri. Ini sangat ideal untuk transmisi Web, menyediakan pendekatan terpadu untuk menggambarkan dan bertukar independen dari aplikasi atau vendor data terstruktur.
Untuk informasi lebih lanjut, silakan lihat kami tutorial XML
XML parser SAX dan DOM terutama dua jenis.
RUBY parsing dokumen XML dapat menggunakan perpustakaan REXML perpustakaan ini.
REXML perpustakaan adalah ruby XML toolkit adalah dengan menggunakan bahasa Ruby murni, mengikuti norma-norma XML1.0.
Dalam versi Ruby1.8 dan kemudian, perpustakaan akan berisi RUBY REXML.
Jalan REXML perpustakaan adalah: REXML / dokumen
Semua metode dan kelas yang dikemas ke dalam modul REXML.
REXML parser memiliki beberapa keuntungan atas parser lain:
Berikut ini adalah contoh kode XML, simpan sebagai movies.xml:
<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>
Mari kita mulai untuk mengurai data XML Pertama kami memperkenalkan perpustakaan REXML / dokumen, kita biasanya bisa di top-level namespace REXML diperkenalkan:
#!/usr/bin/ruby -w require 'rexml/document' include REXML xmlfile = File.new("movies.xml") xmldoc = Document.new(xmlfile) # 获取 root 元素 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 }
Contoh di atas output:
Root element : New Arrivals Movie Title : Enemy Behind Movie Title : Transformers Movie Title : Trigun Movie Title : Ishtar Movie Type : War, Thriller Movie Type : Anime, Science Fiction Movie Type : Anime, Action Movie Type : Comedy Movie Description : Talk about a US-Japan war Movie Description : A schientific fiction Movie Description : Vash the Stampede! Movie Description : Viewable boredom SAX-like Parsing:
Pengolahan data file yang sama: movies.xml, SAX parsing tidak dianjurkan sebagai file kecil, berikut ini adalah contoh sederhana:
#!/usr/bin/ruby -w require 'rexml/document' require 'rexml/streamlistener' include REXML class MyListener include REXML::StreamListener def tag_start(*args) puts "tag_start: #{args.map {|x| x.inspect}.join(', ')}" end def text(data) return if data =~ /^\w*$/ # whitespace only abbrev = data[0id40] + (data.length > 40 ? "id." : "") puts " text : #{abbrev.inspect}" end end list = MyListener.new xmlfile = File.new("movies.xml") Document.parse_stream(xmlfile, list)
Di atas output:
tag_start: "collection", {"shelf"=>"New Arrivals"} tag_start: "movie", {"title"=>"Enemy Behind"} tag_start: "type", {} text : "War, Thriller" tag_start: "format", {} tag_start: "year", {} tag_start: "rating", {} tag_start: "stars", {} tag_start: "description", {} text : "Talk about a US-Japan war" tag_start: "movie", {"title"=>"Transformers"} tag_start: "type", {} text : "Anime, Science Fiction" tag_start: "format", {} tag_start: "year", {} tag_start: "rating", {} tag_start: "stars", {} tag_start: "description", {} text : "A schientific fiction" tag_start: "movie", {"title"=>"Trigun"} tag_start: "type", {} text : "Anime, Action" tag_start: "format", {} tag_start: "episodes", {} tag_start: "rating", {} tag_start: "stars", {} tag_start: "description", {} text : "Vash the Stampede!" tag_start: "movie", {"title"=>"Ishtar"} tag_start: "type", {} tag_start: "format", {} tag_start: "rating", {} tag_start: "stars", {} tag_start: "description", {} text : "Viewable boredom"
Kita dapat menggunakan XPath untuk melihat XML, XPath untuk menemukan informasi adalah dokumen dalam bahasa XML (Lihat: XPath Tutorial ).
XPath adalah XML Jalan Bahasa, itu adalah metode yang digunakan untuk menentukan XML (subset dari Standard Generalized Markup Language) bahasa dokumen bagian dari lokasi. XPath berbasis pohon XML, dan memberikan kemampuan untuk mencari node struktur data di pohon.
Ruby XPath dukungan XPath oleh kelas REXML, yang didasarkan pada analisis (Document Object Model) pohon.
#!/usr/bin/ruby -w 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
Contoh di atas output:
<movie title='Enemy Behind'> id. </> War, Thriller Anime, Science Fiction Anime, Action Comedy ["DVD", "DVD", "DVD", "VHS"]
Ruby memiliki dua XSLT parser, deskripsi singkat diberikan di bawah ini:
parser ini ditulis dan dipelihara oleh keadilan Masayoshi Takahash. Hal ini terutama ditulis untuk sistem operasi Linux, Anda memerlukan perpustakaan berikut:
Anda dapat Ruby-Sablotron menemukan perpustakaan tersebut.
XSLT4R perlu operasi XMLScan, termasuk XSLT4R arsip, yang merupakan Ruby modul 100%. modul-modul ini dapat menggunakan metode instalasi Ruby standar (yaitu Ruby install.rb) instalasi.
sintaks XSLT4R adalah sebagai berikut:
ruby xslt.rb stylesheet.xsl document.xml [arguments]
Jika Anda ingin menggunakan XSLT4R dalam aplikasi Anda, Anda dapat memperkenalkan parameter XSLT dan masukan yang Anda butuhkan. Contohnya adalah sebagai berikut:
require "xslt" stylesheet = File.readlines("stylesheet.xsl").to_s xml_doc = File.readlines("document.xml").to_s arguments = { 'image_dir' => '/idid' } sheet = XSLT::Stylesheet.new( stylesheet, arguments ) # output to StdOut sheet.apply( xml_doc ) # output to 'str' str = "" sheet.output = [ str ] sheet.apply( xml_doc )