विज्ञापन
क्या आप जावा से एक्सएमएल फाइल को पढ़ना और लिखना सीखना चाहेंगे?
एक्सएमएल फ़ाइलें XML फ़ाइल क्या है और आप इसे कैसे खोल सकते हैं और इसका उपयोग कैसे कर सकते हैं?आपने "XML" शब्द देखा होगा। हो सकता है कि आपने गलती से कोई XML फ़ाइल खोल दी हो। एक्सएमएल क्या है और आप इसका इस्तेमाल कैसे करते हैं? अधिक पढ़ें डेटा के भंडारण सहित विभिन्न उद्देश्यों के लिए उपयोग किया जाता है। JSON के लोकप्रिय होने से पहले, XML संरचित डेटा के प्रतिनिधित्व, भंडारण और परिवहन के लिए पसंदीदा प्रारूप था। हालांकि हाल के वर्षों में एक्सएमएल की लोकप्रियता कम हो गई है, आप कभी-कभी इसका सामना कर सकते हैं, इसलिए यह सीखना महत्वपूर्ण है कि कोड से इसके साथ कैसे काम किया जाए।
जावा मानक संस्करण (एसई) 10 मुख्य जावा अवधारणाएँ जो आपको आरंभ करते समय सीखनी चाहिएचाहे आप GUI लिख रहे हों, सर्वर-साइड सॉफ़्टवेयर विकसित कर रहे हों, या Android का उपयोग करने वाला कोई मोबाइल एप्लिकेशन, जावा सीखना आपकी अच्छी सेवा करेगा। आरंभ करने में आपकी सहायता के लिए यहां कुछ प्रमुख जावा अवधारणाएं दी गई हैं। अधिक पढ़ें में शामिल है एक्सएमएल प्रोसेसिंग के लिए जावा एपीआई (जेएक्सपी)
, जो एक व्यापक शब्द है जो XML संसाधन के अधिकांश पहलुओं को समाविष्ट करता है। इसमे शामिल है:- डोम: दस्तावेज़ ऑब्जेक्ट मॉडल में XML कलाकृतियों जैसे तत्व, नोड, विशेषताओं आदि के साथ काम करने के लिए कक्षाएं शामिल हैं। डीओएम एपीआई पूरे एक्सएमएल दस्तावेज़ को प्रसंस्करण के लिए स्मृति में लोड करता है, इसलिए यह बड़ी एक्सएमएल फाइलों के साथ काम करने के लिए बहुत उपयुक्त नहीं है।
- सैक्स: एक्सएमएल के लिए सरल एपीआई एक्सएमएल पढ़ने के लिए एक घटना-संचालित एल्गोरिदम है। यहां एक्सएमएल को एक्सएमएल पढ़ते समय मिलने वाली फायरिंग घटनाओं द्वारा संसाधित किया जाता है। इस पद्धति का उपयोग करने के लिए स्मृति आवश्यकताएं कम हैं, लेकिन एपीआई के साथ काम करना डोम के साथ काम करने की तुलना में अधिक जटिल है।
- स्टैक्स: एक्सएमएल के लिए स्ट्रीमिंग एपीआई एक्सएमएल एपीआई के लिए हाल ही में जोड़ा गया है और एक्सएमएल के उच्च-प्रदर्शन स्ट्रीम फ़िल्टरिंग, प्रोसेसिंग और संशोधन प्रदान करता है। हालांकि यह पूरे एक्सएमएल दस्तावेज़ को मेमोरी में लोड करने से बचाता है, लेकिन यह पुल-टाइप आर्किटेक्चर प्रदान करता है एक घटना-संचालित वास्तुकला की तुलना में, इसलिए SAX का उपयोग करने की तुलना में एप्लिकेशन को कोड करना और समझना आसान है एपीआई।
इस लेख में, हम उपयोग करते हैं डोम एपीआई जावा से एक्सएमएल फाइलों को पढ़ने और लिखने का तरीका प्रदर्शित करने के लिए। हम अन्य दो एपीआई को भविष्य के लेखों में शामिल करेंगे।
एक नमूना एक्सएमएल फ़ाइल
इस लेख के प्रयोजन के लिए, हम निम्नलिखित नमूना एक्सएमएल का उपयोग करके अवधारणाओं को प्रदर्शित करते हैं, जिन्हें पाया जा सकता है यहां:
1.0?>गैम्बर्डेला, मैथ्यू एक्सएमएल डेवलपर गाइड
संगणक 44.95 2000-10-01 XML के साथ एप्लिकेशन बनाने पर एक गहन नज़र। रॉल्स, किमो ...
XML फ़ाइल पढ़ना
आइए DOM API का उपयोग करके XML फ़ाइल को पढ़ने के लिए आवश्यक बुनियादी चरणों को देखें।
का एक उदाहरण प्राप्त करने के लिए पहला कदम है दस्तावेज़ निर्माता. XML दस्तावेज़ों को पार्स करने के लिए बिल्डर का उपयोग किया जाता है। बुनियादी उपयोग के लिए, हम इसे इस तरह करते हैं:
DocumentBuilderFactory फ़ैक्टरी = DocumentBuilderFactory.newInstance (); Factory.setNamespaceAware (झूठा); Factory.setValidating (झूठा); DocumentBuilder निर्माता = factory.newDocumentBuilder ();
अब हम पूरे दस्तावेज़ को XML रूट एलिमेंट से शुरू करके मेमोरी में लोड कर सकते हैं। हमारे उदाहरण में, यह है सूची तत्व।
फ़ाइल फ़ाइल =...; // एक्सएमएल फ़ाइल पढ़ने के लिए। दस्तावेज़ दस्तावेज़ = Builder.parse (फ़ाइल); एलिमेंट कैटलॉग = document.getDocumentElement ();
और वह यह है, दोस्तों! XML पढ़ने के लिए DOM API वास्तव में सरल है। अब आपके पास इसके मूल तत्व से शुरू होने वाले संपूर्ण XML दस्तावेज़ तक पहुंच है, सूची. आइए अब देखें कि इसके साथ कैसे काम करना है।
डोम एपीआई का उपयोग करना
अब जबकि हमारे पास XML रूट है तत्त्व, हम जानकारी की दिलचस्प डली निकालने के लिए DOM API का उपयोग कर सकते हैं।
सभी प्राप्त करें किताब मूल तत्व के बच्चे और उनके ऊपर लूप। ध्यान दें कि getChildNodes () रिटर्न सब पाठ, टिप्पणियाँ आदि सहित बच्चे। हमारे उद्देश्य के लिए, हमें केवल बाल तत्वों की आवश्यकता है, इसलिए हम दूसरों को छोड़ देते हैं।
NodeList पुस्तकें = कैटलॉग.getChildNodes (); के लिए (int i = 0, ii = 0, n =books.getLength(); मैं
माता-पिता को देखते हुए आप एक विशिष्ट बाल तत्व कैसे ढूंढते हैं? निम्न स्थिर विधि पहला मिलान तत्व देता है यदि पाया जाता है, या शून्य। जैसा कि आप देख सकते हैं, प्रक्रिया में बच्चे के नोड्स की सूची प्राप्त करना और उनके माध्यम से लूपिंग निर्दिष्ट नाम के साथ तत्व नोड्स चुनना शामिल है।
स्थिर निजी नोड सबसे पहले नामांकित तत्व (नोड पैरेंट, स्ट्रिंग टैगनाम) ढूंढता है {नोडलिस्ट बच्चे = parent.getChildNodes (); के लिए (int i = 0, in = Kids.getLength(); मैं
ध्यान दें कि DOM API किसी तत्व के भीतर टेक्स्ट सामग्री को एक अलग प्रकार के नोड के रूप में मानता है TEXT_NODE. इसके अलावा, टेक्स्ट सामग्री को कई आसन्न टेक्स्ट नोड्स में विभाजित किया जा सकता है। तो एक तत्व के भीतर पाठ सामग्री लाने के लिए निम्नलिखित विशेष प्रसंस्करण की आवश्यकता है।
स्थिर निजी स्ट्रिंग getCharacterData (नोड पैरेंट) {स्ट्रिंगबिल्डर टेक्स्ट = नया स्ट्रिंगबिल्डर (); अगर (माता-पिता == अशक्त) वापसी text.toString (); NodeList बच्चे = parent.getChildNodes (); के लिए (int k = 0, kn = चिल्ड्रन। getLength (); कश्मीर
इन सुविधा कार्यों के साथ, आइए अब हम अपने नमूना एक्सएमएल से कुछ जानकारी सूचीबद्ध करने के लिए कुछ कोड देखें। हम प्रत्येक पुस्तक के लिए विस्तृत जानकारी दिखाना चाहेंगे, जैसे कि एक पुस्तक कैटलॉग में उपलब्ध होगी।
NodeList पुस्तकें = कैटलॉग.getChildNodes (); के लिए (int i = 0, ii = 0, n =books.getLength(); मैं
एक्सएमएल आउटपुट लिखना
जावा प्रदान करता है एक्सएमएल ट्रांसफॉर्म एपीआई एक्सएमएल डेटा को बदलने के लिए। हम इस एपीआई का उपयोग के साथ करते हैं पहचान परिवर्तन आउटपुट उत्पन्न करने के लिए।
एक उदाहरण के रूप में, आइए हम एक नया जोड़ें किताब ऊपर प्रस्तुत नमूना सूची के लिए तत्व। पुस्तक का विवरण (जैसे लेखक, शीर्षक, आदि) बाहरी रूप से प्राप्त किया जा सकता है, शायद गुण फ़ाइल या डेटाबेस से। हम डेटा लोड करने के लिए निम्न गुण फ़ाइल का उपयोग करते हैं।
आईडी = बीके113. लेखक = जेन ऑस्टेन। शीर्षक = गर्व और पूर्वाग्रह। शैली = रोमांस। कीमत = 6.99। publish_date=2010-04-01. विवरण = "यह सार्वभौमिक रूप से स्वीकार किया गया सत्य है, कि एक अच्छे भाग्य वाले एकल व्यक्ति को पत्नी की कमी होनी चाहिए।" तो शुरू होता है गौरव और प्रेजुडिस, जेन ऑस्टेन की मजाकिया हास्य-व्यंग्य-जो अब तक के सबसे लोकप्रिय उपन्यासों में से एक है-जिसमें दोनों के बीच शानदार सभ्य वाद-विवाद की विशेषता है। गौरवान्वित मिस्टर डार्सी और पूर्वाग्रह से ग्रसित एलिजाबेथ बेनेट के रूप में वे अठारहवीं शताब्दी के ड्राइंग-रूम की एक श्रृंखला में अपनी उत्साही प्रेमालाप को निभाते हैं साज़िश।
पहला कदम मौजूदा एक्सएमएल फाइल को ऊपर प्रस्तुत विधि का उपयोग करके पार्स करना है। कोड भी नीचे दिखाया गया है।
फ़ाइल फ़ाइल =...; // एक्सएमएल फ़ाइल पढ़ने के लिए। दस्तावेज़ दस्तावेज़ = Builder.parse (फ़ाइल); एलिमेंट कैटलॉग = document.getDocumentElement ();
हम गुण फ़ाइल का उपयोग करके डेटा लोड करते हैं गुण जावा के साथ प्रदान की गई कक्षा। कोड काफी सरल है और नीचे दिखाया गया है।
स्ट्रिंग प्रॉप्सफाइल =...; गुण सहारा = नई गुण (); कोशिश करें (FileReader in = new FileReader (propsFile)) {props.load (in); }
एक बार गुण लोड हो जाने के बाद, हम उन मानों को पुनः प्राप्त करते हैं जिन्हें हम गुण फ़ाइल से जोड़ना चाहते हैं।
स्ट्रिंग आईडी = props.getProperty("id"); स्ट्रिंग लेखक = props.getProperty ("लेखक"); स्ट्रिंग शीर्षक = props.getProperty ("शीर्षक"); स्ट्रिंग शैली = props.getProperty ("शैली"); स्ट्रिंग मूल्य = प्रॉप्स। गेटप्रॉपर्टी ("कीमत"); स्ट्रिंग publish_date = props.getProperty("publish_date"); स्ट्रिंग descr = props.getProperty ("विवरण");
आइए अब एक खाली बनाएँ किताब तत्व।
एलिमेंट बुक = document.createElement("book"); Book.setAttribute ("आईडी", आईडी);
में बाल तत्वों को जोड़ना किताब तुच्छ है। सुविधा के लिए, हम आवश्यक तत्वों के नाम a. में एकत्र करते हैं सूची और मानों को एक लूप में जोड़ें।
सूचीelnames =Arrays.asList ("लेखक", "शीर्षक", "शैली", "कीमत", "publish_date", "विवरण"); के लिए (स्ट्रिंग elname: elnames) {तत्व el = document.createElement (elname); टेक्स्ट टेक्स्ट = document.createTextNode (props.getProperty (elname)); el.appendChild (पाठ); Book.appendChild (el); } कैटलॉग.एपेंड चाइल्ड (पुस्तक);
और ऐसा ही किया जाता है। NS सूची तत्व में अब नया है किताब तत्व जोड़ा गया। अब जो कुछ बचा है वह अद्यतन XML को लिखना है।
XML लिखने के लिए, हमें एक उदाहरण की आवश्यकता है ट्रांसफार्मर जो नीचे दिखाए अनुसार बनाया गया है। ध्यान दें कि हम आउटपुट एक्सएमएल के इंडेंटेशन का अनुरोध करते हैं सेटऑटपुटप्रॉपर्टी () तरीका।
TransformerFactory tfact = TransformerFactory.newInstance (); ट्रांसफार्मर tform = tfact.newTransformer (); tform.setOutputProperty (OutputKeys. इंडेंट, "हां"); tform.setOutputProperty ("{ http://xml.apache.org/xslt}indent-amount", "3");
एक्सएमएल आउटपुट जेनरेट करने का अंतिम चरण ट्रांसफॉर्मेशन लागू करना है। परिणाम आउटपुट स्ट्रीम पर दिखाई देता है, System.out.
tform.transform (नया DOMSource (दस्तावेज़), नया StreamResult (System.out));
किसी फ़ाइल में सीधे आउटपुट लिखने के लिए, निम्न का उपयोग करें।
tform.transform (नया DOMSource (दस्तावेज़), नया StreamResult (नई फ़ाइल ("output.xml")));
और यह इस लेख को DOM API का उपयोग करके XML फ़ाइलों को पढ़ने और लिखने पर समाप्त करता है।
क्या आपने अपने अनुप्रयोगों में DOM API का उपयोग किया है? यह कैसा प्रदर्शन किया? कृपया हमें नीचे टिप्पणी में बताएं।