99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Groovy XML

2022-07-21 11:27 更新

XML是一種便攜的開放源代碼語言,允許程序員開發(fā)可以被其他應(yīng)用程序讀取的應(yīng)用程序,而不管操作系統(tǒng)和/或開發(fā)語言。這是用于在應(yīng)用程序之間交換數(shù)據(jù)的最常用的語言之一。

XML是什么?

可擴(kuò)展標(biāo)記語言XML是一種非常類似于HTML或SGML的標(biāo)記語言。這是萬維網(wǎng)聯(lián)盟推薦的,可作為開放標(biāo)準(zhǔn)。XML對于跟蹤少量到中等數(shù)據(jù)量而不需要基于SQL的骨干非常有用。

Groovy中的XML支持

Groovy語言還提供了對XML語言的豐富支持。使用的兩個(gè)最基本的XML類是 -

  • XML標(biāo)記構(gòu)建器 - Groovy支持基于樹的標(biāo)記生成器BuilderSupport,它可以被子類化以生成各種樹結(jié)構(gòu)對象表示。通常,這些構(gòu)建器用于表示XML標(biāo)記,HTML標(biāo)記。 Groovy的標(biāo)記生成器捕獲對偽方法的調(diào)用,并將它們轉(zhuǎn)換為樹結(jié)構(gòu)的元素或節(jié)點(diǎn)。這些偽方法的參數(shù)被視為節(jié)點(diǎn)的屬性。作為方法調(diào)用一部分的閉包被視為生成的樹節(jié)點(diǎn)的嵌套子內(nèi)容。

  • XML解析器 - Groovy XmlParser類使用一個(gè)簡單的模型來將XML文檔解析為Node實(shí)例的樹。每個(gè)節(jié)點(diǎn)都有XML元素的名稱,元素的屬性和對任何子節(jié)點(diǎn)的引用。這個(gè)模型足夠用于大多數(shù)簡單的XML處理。

對于所有的XML代碼示例,讓我們使用以下簡單的XML文件movies.xml來構(gòu)建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> 
      <year>1986</year> 
      <rating>PG</rating> 
      <stars>10</stars> 
      <description>Vash the Stam pede!</description> 
   </movie> 
	
   <movie title = "Ishtar"> 
      <type>Comedy</type> 
      <format>VHS</format> 
      <year>1987</year> 
      <rating>PG</rating> 
      <stars>2</stars> 
      <description>Viewable boredom </description> 
   </movie> 
	
</collection> 

XML標(biāo)記生成器

句法

public MarkupBuilder()

MarkupBuilder用于構(gòu)造整個(gè)XML文檔。通過首先創(chuàng)建XML文檔類的對象來創(chuàng)建XML文檔。一旦創(chuàng)建了對象,可以調(diào)用偽方法來創(chuàng)建XML文檔的各種元素。

讓我們來看一個(gè)如何創(chuàng)建一個(gè)塊的示例,即從上述XML文檔中創(chuàng)建一個(gè)電影元素 -

import groovy.xml.MarkupBuilder 

class Example {
   static void main(String[] args) {
      def mB = new MarkupBuilder()
		
      // Compose the builder
      mB.collection(shelf : 'New Arrivals') {
         movie(title : 'Enemy Behind')
         type('War, Thriller')
         format('DVD')
         year('2003')
         rating('PG')
         stars(10)
         description('Talk about a US-Japan war') 
      }
   } 
}

在上面的例子中,需要注意以下幾點(diǎn):

  • mB.collection() -這是一個(gè)標(biāo)記生成器,用于創(chuàng)建<collection> </ collection>的頭XML標(biāo)簽

  • movie(title : 'Enemy Behind') -這些偽方法使用此方法創(chuàng)建帶有值的標(biāo)記的子標(biāo)記。通過指定一個(gè)名為title的值,這實(shí)際上表示需要為該元素創(chuàng)建一個(gè)屬性。

  • 向偽方法提供閉包以創(chuàng)建XML文檔的剩余元素。

  • 初始化類MarkupBuilder的默認(rèn)構(gòu)造函數(shù),以便將生成的XML發(fā)布到標(biāo)準(zhǔn)輸出流

當(dāng)我們運(yùn)行上面的程序,我們將得到以下結(jié)果 -

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

為了創(chuàng)建整個(gè)XML文檔,需要執(zhí)行以下操作。

  • 需要創(chuàng)建映射條目以存儲元素的不同值。
  • 對于地圖的每個(gè)元素,我們將值分配給每個(gè)元素。
import groovy.xml.MarkupBuilder 

class Example {
   static void main(String[] args) {
      def mp = [1 : ['Enemy Behind', 'War, Thriller','DVD','2003', 
         'PG', '10','Talk about a US-Japan war'],
         2 : ['Transformers','Anime, Science Fiction','DVD','1989', 
         'R', '8','A scientific fiction'],
         3 : ['Trigun','Anime, Action','DVD','1986', 
         'PG', '10','Vash the Stam pede'],
         4 : ['Ishtar','Comedy','VHS','1987', 'PG', 
         '2','Viewable boredom ']] 
			
      def mB = new MarkupBuilder()  
		
      // Compose the builder
      def MOVIEDB = mB.collection('shelf': 'New Arrivals') {
         mp.each {
            sd -> 
            mB.movie('title': sd.value[0]) {  
               type(sd.value[1])
               format(sd.value[2])
               year(sd.value[3]) 
               rating(sd.value[4])
               stars(sd.value[4]) 
               description(sd.value[5]) 
            }
         }
      }
   } 
} 

當(dāng)我們運(yùn)行上面的程序,我們將得到以下結(jié)果 -

<collection shelf = 'New Arrivals'> 
   <movie title = 'Enemy Behind'> 
      <type>War, Thriller</type> 
      <format>DVD</format> 
      <year>2003</year> 
      <rating>PG</rating> 
      <stars>PG</stars> 
      <description>10</description> 
   </movie> 
   <movie title = 'Transformers'> 
      <type>Anime, Science Fiction</type> 
      <format>DVD</format> 
      <year>1989</year>
	  <rating>R</rating> 
      <stars>R</stars> 
      <description>8</description> 
   </movie> 
   <movie title = 'Trigun'> 
      <type>Anime, Action</type> 
      <format>DVD</format> 
      <year>1986</year> 
      <rating>PG</rating> 
      <stars>PG</stars> 
      <description>10</description> 
   </movie> 
   <movie title = 'Ishtar'> 
      <type>Comedy</type> 
      <format>VHS</format> 
      <year>1987</year> 
      <rating>PG</rating> 
      <stars>PG</stars> 
      <description>2</description> 
   </movie> 
</collection> 

XML解析

Groovy XmlParser類使用一個(gè)簡單的模型來將XML文檔解析為Node實(shí)例的樹。每個(gè)節(jié)點(diǎn)都有XML元素的名稱,元素的屬性和對任何子節(jié)點(diǎn)的引用。這個(gè)模型足夠用于大多數(shù)簡單的XML處理。

句法

public XmlParser() 
   throws ParserConfigurationException, 
      SAXException

以下代碼顯示了如何使用XML解析器讀取XML文檔的示例。

讓我們假設(shè)我們有同樣的文檔,名為Movies.xml,我們想解析XML文檔并向用戶顯示一個(gè)正確的輸出。以下代碼是我們?nèi)绾伪闅vXML文檔的整個(gè)內(nèi)容并向用戶顯示正確響應(yīng)的代碼段。

import groovy.xml.MarkupBuilder 
import groovy.util.*

class Example {

   static void main(String[] args) { 
	
      def parser = new XmlParser()
      def doc = parser.parse("D:Movies.xml");
		
      doc.movie.each{
         bk->
         print("Movie Name:")
         println "${bk['@title']}"
			
         print("Movie Type:")
         println "${bk.type[0].text()}"
			
         print("Movie Format:")
         println "${bk.format[0].text()}"
			
         print("Movie year:")
         println "${bk.year[0].text()}"
			
         print("Movie rating:")
         println "${bk.rating[0].text()}"
			
         print("Movie stars:")
         println "${bk.stars[0].text()}"
			
         print("Movie description:")
         println "${bk.description[0].text()}"
         println("*******************************")
      }
   }
} 

當(dāng)我們運(yùn)行上面的程序,我們將得到以下結(jié)果 -

Movie Name:Enemy Behind 
Movie Type:War, Thriller 
Movie Format:DVD 
Movie year:2003 
Movie rating:PG 
Movie stars:10 
Movie description:Talk about a US-Japan war 
******************************* 
Movie Name:Transformers 
Movie Type:Anime, Science Fiction 
Movie Format:DVD 
Movie year:1989 
Movie rating:R 
Movie stars:8 
Movie description:A schientific fiction 
******************************* 
Movie Name:Trigun 
Movie Type:Anime, Action
Movie Format:DVD 
Movie year:1986 
Movie rating:PG 
Movie stars:10 
Movie description:Vash the Stam pede! 
******************************* 
Movie Name:Ishtar 
Movie Type:Comedy 
Movie Format:VHS 
Movie year:1987 
Movie rating:PG 
Movie stars:2 
Movie description:Viewable boredom

重要的事情需要注意上面的代碼。

  • 正在形成類XmlParser的對象,以便它可以用于解析XML文檔。

  • 解析器被給定XML文件的位置。

  • 對于每個(gè)電影元素,我們使用閉包瀏覽每個(gè)子節(jié)點(diǎn)并顯示相關(guān)信息。

對于movie元素本身,我們使用@符號顯示附加到movie元素的title屬性。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號