Najlepszy samouczek Ruby XML, XSLT i XPath Tutorial W 2024 r. W tym samouczku możesz dowiedzieć się Czym jest XML?,parser XML i struktura API,Ruby do analizowania i tworzenia XML,DOM parser,parser SAX,XPath i Ruby,XSLT i Ruby,więcej informacji,
Odnosi się ono do Extensible Markup Language (XML Extensible Markup Language).
Extensible Markup Language, podzbiorem SGML, sposobu oznakowania dokumentu elektronicznego mieć uporządkowany język znaczników.
Może być stosowany do skuwki danych, definiowanie typów danych, to technologia, która pozwala użytkownikom na zdefiniowanie własnego języka źródłowego język znaczników. Jest to idealne rozwiązanie do transmisji internetowej, zapewniając jednolite podejście do opisywania i wymiany niezależny od aplikacji lub dostawców danych strukturyzowanych.
Aby uzyskać więcej informacji, proszę zapoznać się z naszą samouczek XML
XML parser SAX i DOM są głównie dwa rodzaje.
RUBY parsowanie dokumentów XML mogą korzystać z tej biblioteki REXML bibliotekę.
Biblioteka REXML jest Ruby XML Toolkit jest użycie czystego języka Ruby, wykonaj następujące normy XML1.0.
W wersjach ruby1.8 i późniejszych, biblioteka będzie zawierać RUBY REXML.
Biblioteka Ścieżka REXML jest: rexml / dokument
Wszystkie metody i klasy są pakowane do modułu REXML.
REXML parser ma następujące zalety w stosunku do innych parserów:
Poniżej znajduje się przykład kodu XML, zapisać go jako 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>
Zacznijmy do analizowania danych XML Po pierwsze wprowadziliśmy bibliotekę rexml / dokument, możemy zazwyczaj w przestrzeni nazw REXML najwyższego poziomu wprowadzonego:
#!/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 }
Powyższy przykład wyjście jest:
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:
Przetwarzanie tego samego pliku danych: movies.xml SAX parsowanie nie jest zalecana jako mały plik, poniżej znajduje się prosty przykład:
#!/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[0pl40] + (data.length > 40 ? "pl." : "") puts " text : #{abbrev.inspect}" end end list = MyListener.new xmlfile = File.new("movies.xml") Document.parse_stream(xmlfile, list)
Przede wyjściowy:
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"
Możemy użyć XPath aby zobaczyć XML, XPath znalezienie informacji jest dokumentem w języku XML (Patrz: XPath Tutorial ).
XPath jest XML Path Language, jest to metoda stosowana do określenia XML (podzbiór SGML) języka dokumentu częścią lokalizacji. XPath oparte drzewo XML oraz zapewnia możliwość szukania w węzłach struktury danych w drzewie.
Ruby XPath wsparcie XPath według klasy REXML, która opiera się na analizie (Document Object Model) drzewa.
#!/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
Powyższy przykład wyjście jest:
<movie title='Enemy Behind'> pl. </> War, Thriller Anime, Science Fiction Anime, Action Comedy ["DVD", "DVD", "DVD", "VHS"]
Ruby ma dwa parser XSLT, krótki opis znajduje się poniżej:
Parser ten został napisany i utrzymywany przez sprawiedliwości Masayoshi Takahash. To jest napisane głównie na systemie operacyjnym Linux, potrzebne są następujące biblioteki:
Można Ruby-Sablotron znaleźć tych bibliotek.
XSLT4R muszą XMLScan operacji, w tym archiwum XSLT4R, który jest w 100% moduł Ruby. Moduły te mogą wykorzystywać standardową metodę instalacji Ruby (tj install.rb Ruby) instalacji.
Składnia XSLT4R jest następujący:
ruby xslt.rb stylesheet.xsl document.xml [arguments]
Jeśli chcesz użyć XSLT4R w aplikacji, można wprowadzić parametry wejściowe i XSLT potrzebne. Przykłady są następujące:
require "xslt" stylesheet = File.readlines("stylesheet.xsl").to_s xml_doc = File.readlines("document.xml").to_s arguments = { 'image_dir' => '/plpl' } sheet = XSLT::Stylesheet.new( stylesheet, arguments ) # output to StdOut sheet.apply( xml_doc ) # output to 'str' str = "" sheet.output = [ str ] sheet.apply( xml_doc )