ग्रूवी - एक्सएमएल

XML एक पोर्टेबल, ओपन सोर्स भाषा है, जो प्रोग्रामर को उन एप्लिकेशन को विकसित करने की अनुमति देता है, जो ऑपरेटिंग सिस्टम और / या डेवलपमेंट लैंग्वेज की परवाह किए बिना अन्य एप्लिकेशन द्वारा पढ़े जा सकते हैं। यह अनुप्रयोगों के बीच डेटा के आदान-प्रदान के लिए उपयोग की जाने वाली सबसे आम भाषाओं में से एक है।

XML क्या है?

एक्स्टेंसिबल मार्कअप लैंग्वेज XML एक मार्कअप लैंग्वेज है जैसे HTML या SGML। यह वर्ल्ड वाइड वेब कंसोर्टियम द्वारा अनुशंसित है और एक खुले मानक के रूप में उपलब्ध है। XML SQLbased रीढ़ की आवश्यकता के बिना छोटे से मध्यम मात्रा में डेटा का ट्रैक रखने के लिए बेहद उपयोगी है।

ग्रूवी में एक्सएमएल सपोर्ट

ग्रूवी भाषा एक्सएमएल भाषा का एक समृद्ध समर्थन भी प्रदान करती है। उपयोग की जाने वाली दो सबसे बुनियादी XML कक्षाएं हैं -

  • XML Markup Builder- ग्रूवी एक ट्री-आधारित मार्कअप जनरेटर, बिल्डरसुपोर्ट का समर्थन करता है, जिसे विभिन्न प्रकार के पेड़-संरचित ऑब्जेक्ट प्रतिनिधित्व बनाने के लिए उप-वर्ग किया जा सकता है। आमतौर पर, इन बिल्डरों का उपयोग XML मार्कअप, HTML मार्कअप का प्रतिनिधित्व करने के लिए किया जाता है। ग्रूवी के मार्कअप जनरेटर कॉल को स्यूडोमेथोड्स को पकड़ता है और उन्हें पेड़ की संरचना के तत्वों या नोड में परिवर्तित करता है। इन स्यूडोमेथोड्स के मापदंडों को नोड्स की विशेषताओं के रूप में माना जाता है। विधि कॉल के भाग के रूप में क्लोज़र्स को परिणामी ट्री नोड के लिए नेस्टेड उपमहाद्वीप माना जाता है।

  • XML Parser- ग्रूवी XmlParser वर्ग नोड दस्तावेज़ के पेड़ में XML दस्तावेज़ पार्स करने के लिए एक सरल मॉडल नियुक्त करता है। प्रत्येक नोड में XML तत्व, तत्व की विशेषताओं और किसी भी बच्चे के नोड्स का संदर्भ होता है। यह मॉडल अधिकांश सरल XML प्रसंस्करण के लिए पर्याप्त है।

हमारे सभी एक्सएमएल कोड उदाहरणों के लिए, आइए XML फाइल के निर्माण और बाद में फाइल को पढ़ने के लिए निम्न सरल XML फाइल मूवी.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 मार्कअप बिल्डर

वाक्य - विन्यास

public MarkupBuilder()

MarkupBuilder का उपयोग संपूर्ण XML दस्तावेज़ के निर्माण के लिए किया जाता है। XML डॉक्यूमेंट पहले XML डॉक्यूमेंट क्लास का ऑब्जेक्ट बनाकर बनाया जाता है। एक बार ऑब्जेक्ट बन जाने के बाद, XML डॉक्यूमेंट के विभिन्न तत्वों को बनाने के लिए एक pseudomethod कहा जा सकता है।

आइए एक उदाहरण देखें कि कैसे एक ब्लॉक बनाया जाए, यानी उपरोक्त एक्सएमएल दस्तावेज़ से एक मूवी तत्व -

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') 
      }
   } 
}

उपरोक्त उदाहरण में, निम्नलिखित बातों पर ध्यान देने की आवश्यकता है -

  • mB.collection() - यह एक मार्कअप जनरेटर है जो <संग्रह> </ संग्रह> का हेड XML टैग बनाता है

  • movie(title : 'Enemy Behind')- ये स्यूडोमेथोड्स इस विधि से बच्चे के टैग बनाते हैं और मूल्य के साथ टैग बनाते हैं। शीर्षक नामक मान निर्दिष्ट करके, यह वास्तव में इंगित करता है कि तत्व के लिए एक विशेषता बनाने की आवश्यकता है।

  • XML दस्तावेज़ के शेष तत्वों को बनाने के लिए pseudomethod को एक क्लोजर प्रदान किया जाता है।

  • क्लास मार्कअपबर्स्ट के लिए डिफ़ॉल्ट कंस्ट्रक्टर को इनिशियलाइज़ किया गया है ताकि जेनरेट किया गया एक्सएमएल स्टैंडर्ड आउटपुट स्ट्रीम को जारी किया जाए

जब हम उपरोक्त कार्यक्रम चलाते हैं, तो हमें निम्नलिखित परिणाम मिलेंगे -

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

संपूर्ण XML दस्तावेज़ बनाने के लिए, निम्नलिखित चीजों को करने की आवश्यकता है।

  • तत्वों के विभिन्न मूल्यों को संग्रहीत करने के लिए एक मानचित्र प्रविष्टि बनाने की आवश्यकता है।
  • मानचित्र के प्रत्येक तत्व के लिए, हम प्रत्येक तत्व को मान प्रदान कर रहे हैं।
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]) 
            }
         }
      }
   } 
}

जब हम उपरोक्त कार्यक्रम चलाते हैं, तो हमें निम्नलिखित परिणाम मिलेंगे -

<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 वर्ग एक XML दस्तावेज़ को नोड नोड्स के पेड़ में पार्स करने के लिए एक सरल मॉडल नियुक्त करता है। प्रत्येक नोड में XML तत्व, तत्व की विशेषताओं और किसी भी बच्चे के नोड्स का संदर्भ होता है। यह मॉडल अधिकांश सरल XML प्रसंस्करण के लिए पर्याप्त है।

वाक्य - विन्यास

public XmlParser() 
   throws ParserConfigurationException, 
      SAXException

निम्न कोडेश एक उदाहरण बताता है कि XML दस्तावेज़ को पढ़ने के लिए XML पार्सर का उपयोग कैसे किया जा सकता है।

मान लेते हैं कि हमारे पास Movies.xml नामक एक ही दस्तावेज़ है और हम XML दस्तावेज़ को पार्स करना चाहते थे और उपयोगकर्ता को एक उचित आउटपुट प्रदर्शित करना चाहते थे। निम्नलिखित कोडिस यह बताता है कि हम XML दस्तावेज़ की संपूर्ण सामग्री के माध्यम से कैसे पार कर सकते हैं और उपयोगकर्ता के लिए एक उचित प्रतिक्रिया प्रदर्शित कर सकते हैं।

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("*******************************")
      }
   }
}

जब हम उपरोक्त कार्यक्रम चलाते हैं, तो हमें निम्नलिखित परिणाम मिलेंगे -

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 फ़ाइल का स्थान दिया गया है।

  • प्रत्येक मूवी तत्व के लिए, हम प्रत्येक बच्चे के नोड के माध्यम से ब्राउज़ करने और संबंधित जानकारी प्रदर्शित करने के लिए एक क्लोजर का उपयोग कर रहे हैं।

मूवी तत्व के लिए, हम फिल्म तत्व से जुड़ी शीर्षक विशेषता को प्रदर्शित करने के लिए @ प्रतीक का उपयोग कर रहे हैं।