समजा तुमच्याकडे एक एक्सएमएल फाइल आहे – तुम्हाला फक्त वाचायचे आहे – संपूर्ण फाइल जावा स्ट्रिंग म्हणून दाखवा, कदाचित ती डीबगिंग हेतूसाठी असेल. जर तुम्हाला जावामध्ये हे कसे करायचे याचा विचार करत असाल तर, जावामध्ये स्ट्रिंग म्हणून एक्सएमएल वाचण्याचे बरेच मार्ग आहेत. जर तुम्हाला ओपन सोर्स लायब्ररी वापरणे आवडत असेल तर तुम्ही हे एका ओळीत करू शकता किंवा कोडच्या काही ओळींसह तुम्ही मूलभूत जावामध्ये करू शकता. XML फाईल देखील एक फाईल असल्याने, आपण हे वापरू शकता: BufferedReader: किंवा: FileInputStream: मी माझ्या मागील पोस्टमध्ये चर्चा केलेल्या स्ट्रिंग तंत्राचा वापर करून एक्सएमएल फाईलची सामग्री वाचण्यासाठी जावामध्ये इनपुटस्ट्रीमला स्ट्रिंगमध्ये रूपांतरित करण्याचे 3 मार्ग,

पण हे पोस्ट एका नवीन लायब्ररी बद्दल आहे ज्याला म्हणतात: jcabi-xml: जे खरोखर XML फाईलसह कार्य करणे सोपे करते. आपण XPath अभिव्यक्ती वापरून XML फाइलचे विश्लेषण करू शकता, आपण XSL रूपांतरण, XSD स्कीमा सत्यापन करू शकता – आपण स्ट्रिंग कोडच्या काही ओळी म्हणून संपूर्ण XML फाइलचे विश्लेषण देखील करू शकता.

मी या नवीन एक्सएमएल लायब्ररीसह खेळत होतो – मी एक्सएमएल प्रक्रियेची काही उदाहरणे सामायिक करण्याचा विचार केला की ते किती शक्तिशाली आहे. तसे, XML फाईल स्ट्रिंग म्हणून वाचताना, एक गोष्ट लक्षात ठेवली पाहिजे ती म्हणजे XML फाईलच्या शीर्षकामध्ये वर्णित एन्कोडिंग.

आपण XML लायब्ररी किंवा तत्सम XML पार्सर वापरत असल्यास डोम आणि सॅक्स:, पुढील समायोजन करण्याची आवश्यकता नाही, ते चुकीचे स्ट्रिंग एन्कोडिंग वाचतील, परंतु आपण वापरल्यास BufferedReader: किंवा सामान्य प्रवाह वाचक, आपल्याला अचूक वर्ण एन्कोडिंग वापरले आहे याची खात्री करणे आवश्यक आहे.

या लेखात, तुम्ही जावामध्ये स्ट्रिंग म्हणून XML फाइल्स तीन प्रकारे कसे वाचायचे ते शिकाल: प्रथम FileReader և BufferedReader द्वारे, दुसरा DOM विश्लेषक द्वारे և तिसरा ओपन सोर्स XML लायब्ररी jcabi-xml द्वारे.

जावा मध्ये XML स्ट्रिंग वाचण्याचे 3 मार्ग

एक्सएमएल फायली वाचण्याचे, संपादित करण्याचे आणि तयार करण्याचे बरेच मार्ग आहेत आणि त्यापैकी तीन आपण पाहू. यापैकी दोन दृष्टिकोन जेडीके मानक वर्गावर आधारित आहेत: इंटरफेस आणि तिसरा दृष्टिकोन ओपन सोर्स लायब्ररी वापरेल. आमच्या उदाहरणासाठी आम्ही खालील XML फाईल स्ट्रिंग म्हणून वाचू.

<?xml version="1.0" encoding="UTF-8"?>
<banks>
    <bank id="1">
        <name>Barclays Bank</name>
        <headquarter>London</headquarter>
    </bank>
    <bank id="2">
        <name>Goldman Sachs</name>
        <headquarter>NewYork</headquarter>
    </bank>
    <bank id="3">
        <name>ICBC</name>
        <headquarter>Beijing</headquarter>
    </bank>
</banks>

बीटीडब्ल्यू, जर तुम्ही जावा एक्सएमएल मध्ये नवीन असाल, तर मी सुचवितो की तुम्हीही ते पहा मूलभूत जावा खंड II – प्रगत वैशिष्ट्ये, 9 वी आवृत्ती: Cay S. Horstmann. हे तुम्हाला जाणून घेण्यास मदत करेल – JDBC, XML, JMX, JMS इत्यादी जावाची अधिक प्रगत वैशिष्ट्ये समजून घेण्यास.

एक्सएमएल इन-लाइन वाचण्यासाठी जावा प्रोग्राम

एक्सएमएल स्ट्रिंग म्हणून वाचण्यासाठी आमचा जावा प्रोग्राम येथे आहे. यात तीन उदाहरणे आहेत, प्रथम BufferedReader և XML वापरून मजकूर फाईलप्रमाणे वाचते. हे फार चांगले नाही कारण तुम्हाला स्वत: ला वर्ण एन्कोडिंग निर्दिष्ट करावे लागेल, तर XML पार्सर ते XML शीर्षकावरून थेट वाचू शकेल. या दृष्टिकोनाने तुम्ही XML स्ट्रिंग तयार करू शकता: फाईल ओळ ओळीने वाचा,

दुसरे उदाहरण DOM पार्सर आहे, जे लहान XML फायली वाचण्यासाठी उत्तम आहे कारण ती त्या सर्व मेमरीमध्ये लोड करते आणि नंतर त्यांना DOM ट्री तयार करण्यासाठी पार्स करते. एका प्रचंड XML फाईलचे विश्लेषण करण्यासाठी हे चांगले आहे कारण त्यासाठी बरीच मेमरी लागेल – ती अजूनही संपेल java.lang.OutOfMemoryError. जावा ढीग जागा,

मनोरंजक मुद्दा पंक्ती () पद्धत: दस्तऐवज: ऑब्जेक्ट XML चे स्ट्रिंग रिप्रेझेंटेशन परत करणार नाही, याचा अर्थ तो मॅन्युअल कामासाठी योग्य नाही, परंतु आपण DOM API च्या विविध पद्धतींना कॉल करून बरेच काही करू शकता.

तिसरे उदाहरण मनोरंजक आहे, त्यात ओपन सोर्स लायब्ररी म्हणतात jcabi-xml:, जे एक सोयीस्कर धडा देते: XML दस्तऐवज XML फाईल मेमरीमध्ये सेव्ह करा. हा धडा वगळण्यात आला पंक्ती () XML फाईलचे स्ट्रिंग प्रतिनिधित्व पुनर्संचयित करण्याची पद्धत. तर तुम्ही फक्त दोन ओळी वापरून संपूर्ण XML स्ट्रिंग म्हणून वाचू शकता.

तीन पद्धतींचे प्रदर्शन करण्यासाठी आमच्या जावा प्रोग्रामचा नमुना येथे आहे.

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.xml.sax.SAXException;

import com.jcabi.xml.XML;
import com.jcabi.xml.XMLDocument;


/**
  * Java Program to read XML as String using BufferedReader,
  *  DOM parser and jCabi-xml 
  * open source library.
  */
public class XmlAsStringInJava {

    public static void main(String[] args) 
          throws ParserConfigurationException, SAXException, IOException {
        
        // our XML file for this example
        File xmlFile = new File("info.xml");
        
        // Let's get XML file as String using BufferedReader
        // FileReader uses platform's default character encoding
        // if you need to specify a different encoding, 
        // use InputStreamReader
        Reader fileReader = new FileReader(xmlFile);
        BufferedReader bufReader = new BufferedReader(fileReader);
        
        StringBuilder sb = new StringBuilder();
        String line = bufReader.readLine();
        while( line != null){
            sb.append(line).append("n");
            line = bufReader.readLine();
        }
        String xml2String = sb.toString();
        System.out.println("XML to String using BufferedReader : ");
        System.out.println(xml2String);
        
        bufReader.close();
       
        // parsing XML file to get as String using DOM Parser
        DocumentBuilderFactory dbFactory 
             = DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder = dbFactory.newDocumentBuilder();
        Document xmlDom = docBuilder.parse(xmlFile);
        
        String xmlAsString = xmlDom.toString(); 
        // this will not print what you want
        System.out.println("XML as String using DOM Parser : ");
        System.out.println(xmlAsString);
        
        
        // Reading XML as String using jCabi library
        XML xml = new XMLDocument(new File("info.xml"));
        String xmlString = xml.toString();        
        System.out.println("XML as String using JCabi library : " );
        System.out.println(xmlString);
      }
}

बाहेर पडा:
XML वरून BufferedReader द्वारे ओळ.

<?xml version="1.0" encoding="UTF-8"?>
<banks>
    <bank id="1">
        <name>Barclays Bank</name>
        <headquarter>London</headquarter>
    </bank>
    <bank id="2">
        <name>Goldman Sachs</name>
        <headquarter>NewYork</headquarter>
    </bank>
    <bank id="3">
        <name>ICBC</name>
        <headquarter>Beijing</headquarter>
    </bank>
</banks>

डोम पार्सर वापरून स्ट्रिंग म्हणून एक्सएमएल.
[#document: null]

JCabi लायब्ररी वापरून XML स्ट्रिंग म्हणून.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<banks>
    <bank id="1">
        <name>Barclays Bank</name>
        <headquarter>London</headquarter>
    </bank>
    <bank id="2">
        <name>Goldman Sachs</name>
        <headquarter>NewYork</headquarter>
    </bank>
    <bank id="3">
        <name>ICBC</name>
        <headquarter>Beijing</headquarter>
    </bank>
</banks>

एवढे जावामध्ये स्ट्रिंग म्हणून एक्सएमएल फाइल कशी वाचावीतुम्ही XML ला स्ट्रिंग म्हणून मिळवण्याचे तीन दृष्टिकोन पाहिले आहेत – तुम्ही त्यांची सहज तुलना करू शकता. BufferedReader: शीर्षकात निर्दिष्ट केलेले XML एन्कोडिंग घेत नाही, जर तुम्ही वेगळ्या वर्णाने एन्कोड केलेली XML फाईल वाचू इच्छित असाल तर तुम्ही ती व्यक्तिचलितपणे निर्दिष्ट करणे आवश्यक आहे.

आमच्या उदाहरणात, जसे आपण वापरतो फाइल रीडर:, आमच्याकडे तो पर्याय नाही, परंतु जर तुम्हाला वेगळा पासवर्ड, प्लॅटफॉर्मचे डीफॉल्ट कॅरेक्टर एन्कोडिंग निर्दिष्ट करण्याची आवश्यकता असेल तर कृपया वापरा इनपुटस्ट्रीम रीडर:तसेच जेव्हा आपण वापरतो BufferedReader: आपल्याला नवीन ओळ घेण्याची देखील आवश्यकता आहे, जी वेगवेगळ्या प्लॅटफॉर्मवर भिन्न असू शकते, उदाहरणार्थ, UNIX և Windows नवीन ओळीसाठी भिन्न वर्ण वापरतात.

DOM पार्सर हा XML फायलींचे विश्लेषण करण्याचा योग्य मार्ग आहे, परंतु दुर्दैवाने तो आहे पंक्ती () आपल्याला पाहिजे ते परत करत नाही. आता, जर तुम्ही नवीन XML लायब्ररी वापरून आमचा दोन-ओळीचा कोड पाहिला तर jcabi-xml:, वारा आहे. म्हणूनच जर तुम्ही ओपन सोर्स लायब्ररी वापरू शकत असाल तर तुमचे XML विश्लेषण, सत्यापन: रूपांतरण सुलभ करण्यासाठी हे वापरा.

जर तुम्हाला जावा मधील एक्सएमएल ट्यूटोरियल आवडत असेल, तर तुम्हाला जावा मध्ये एक्सएमएल डेव्हलपमेंट बद्दल अधिक जाणून घेण्यात स्वारस्य आहे, तुम्ही खालील ट्यूटोरियल देखील वाचू शकता.

  • JAXB वापरून जावा ऑब्जेक्टला XML दस्तऐवजात कसे रूपांतरित करावे? [example]
  • DOM विश्लेषक वापरून XML फाइलचे विश्लेषण करण्यासाठी जावा मार्गदर्शक [example]
  • जावा मध्ये SAX विश्लेषक वापरून XML वाचण्यासाठी चरण-दर-चरण मार्गदर्शक. [guide]
  • जावा मध्ये XPath वापरून XML घटक कसा निवडावा? [solution]
  • DOM և SAX विश्लेषक և XML मधील फरक. [answer]
  • जावा स्ट्रिंगमधील एक्सएमएल विशेष वर्ण कसे टाळावेत? [answer]
  • JAXB वापरून मार्शल XML नाही मार्शल कसे करावे. [example]
  • नवशिक्या जावा डेव्हलपर्ससाठी XPath ट्यूटोरियल [tutorial]
  • जावा मध्ये JDOM विश्लेषक वापरून XML फाईलवर प्रक्रिया कशी करावी? [example]
  • जावा मध्ये XPath अभिव्यक्तीचे मूल्यांकन कसे करावे? [example]