स्टैक्स
XML के लिए स्ट्रीमिंग API (StAX) जावा (प्रोग्रामिंग भाषा) समुदाय से उत्पन्न XML दस्तावेज़ों को पढ़ने और लिखने के लिए एक एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस (API) है।
परंपरागत रूप से, XML API या तो हैं:
- DOM आधारित - कॉलिंग एप्लिकेशन द्वारा रैंडम एक्सेस के लिए संपूर्ण दस्तावेज़ को XML ट्री के रूप में मेमोरी में पढ़ा जाता है
- घटना आधारित - स्रोत दस्तावेज़ के भीतर संस्थाओं का सामना करने के लिए एप्लिकेशन घटनाओं को प्राप्त करने के लिए पंजीकृत करता है।
दोनों के फायदे हैं: दस्तावेज़ ऑब्जेक्ट मॉडल, उदाहरण के लिए, दस्तावेज़ के लिए यादृच्छिक अभिगम की अनुमति देता है, और ईवेंट संचालित एल्गोरिथ्म जैसे XML के लिए सरल एपीआई में एक छोटी मेमोरी फ़ुटप्रिंट है और आमतौर पर बहुत तेज़ है।
इन दो पहुँच रूपकों को ध्रुवीय विपरीत माना जा सकता है। एक ट्री आधारित एपीआई असीमित, रैंडम एक्सेस और हेरफेर की अनुमति देता है, जबकि एक इवेंट आधारित एपीआई स्रोत दस्तावेज़ के माध्यम से 'वन शॉट' पास है।
StAX को इन दो विपरीतताओं के बीच एक माध्यिका के रूप में डिज़ाइन किया गया था। StAX रूपक में, प्रोग्रामेटिक एंट्री पॉइंट एक कर्सर है जो दस्तावेज़ के भीतर एक बिंदु का प्रतिनिधित्व करता है। एप्लिकेशन कर्सर को आगे बढ़ाता है - पार्सर से जानकारी को 'खींचने' की आवश्यकता होती है। यह एक घटना आधारित एपीआई से अलग है - जैसे कि SAX - जो एप्लिकेशन को 'पुश' डेटा देता है - दस्तावेज़ के भीतर स्थान का ट्रैक रखने के लिए आवश्यक घटनाओं के बीच राज्य को बनाए रखने के लिए एप्लिकेशन की आवश्यकता होती है।
उत्पत्ति
StAX की जड़ें XML के लिए कई असंगत पुल एपीआई में हैं, विशेष रूप से XMLPULL, जिसके लेखक (स्टीफन हौस्टीन और अलेक्जेंडर स्लोमिन्स्की) ने दूसरों के साथ, बीईए सिस्टम्स के साथ सहयोग किया है। ओरेकल कॉर्पोरेशन, सन माइक्रोसिस्टम्स और जेम्स क्लार्क (प्रोग्रामर)।
उदाहरण
JSR-173 विशिष्टता से • अंतिम, V1.0 (उचित उपयोग के तहत प्रयुक्त)।
उद्धरण:
- निम्नलिखित जावा एपीआई कर्सर दृष्टिकोण में एक्सएमएल पढ़ने के लिए मुख्य तरीके दिखाता है।
public interface XMLStreamReader {
public int next() throws XMLStreamException;
public boolean hasNext() throws XMLStreamException;
public String getText();
public String getLocalName();
public String getNamespaceURI();
// ...other methods not shown
}
- एपीआई के लेखन पक्ष में ऐसे तरीके हैं जो "StartElement" और "EndElement" ईवेंट प्रकारों के पढ़ने वाले पक्ष के अनुरूप हैं।
public interface XMLStreamWriter {
public void writeStartElement(String localName) throws XMLStreamException;
public void writeEndElement() throws XMLStreamException;
public void writeCharacters(String text) throws XMLStreamException;
// ...other methods not shown
}
- 5.3.1 XMLStreamReader
- यह उदाहरण बताता है कि कैसे एक इनपुट फैक्ट्री को इंस्टैंट किया जाए, एक रीडर बनाया जाए और एक XML दस्तावेज़ के तत्वों पर पुनरावृति की जाए।
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(...);
while (xmlStreamReader.hasNext()) {
xmlStreamReader.next();
}
यह भी देखें
जावा में XML को संसाधित करने के लिए प्रतिस्पर्धी और पूरक तरीके (आदेश परिचय की प्रारंभिक तिथि पर आधारित है):
- डॉक्यूमेंट ऑब्जेक्ट मॉडल | डॉक्यूमेंट ऑब्जेक्ट मॉडल (DOM), पहला मानकीकृत, भाषा/प्लेटफ़ॉर्म-स्वतंत्र ट्री-आधारित XML प्रोसेसिंग मॉडल; वैकल्पिक जावा ट्री मॉडल में JDOM, DOM4j और XOM (XML पार्सर) शामिल हैं
- एक्सएमएल के लिए सरल एपीआई | एक्सएमएल के लिए सरल एपीआई (एसएएक्स), मानक एक्सएमएल पुश एपीआई
- जेएक्सबी | जावा एक्सएमएल बाइंडिंग एपीआई (जेएक्सबी), एक अन्य पार्सर (आमतौर पर स्ट्रीमिंग पार्सर) के शीर्ष पर काम करता है, जावा ऑब्जेक्ट्स से/से निहित डेटा को बांधता है।
- स्ट्रीमिंग एक्सएमएल
- जावा के लिए XQuery एपीआई
बाहरी संबंध
- Introduction to StAX XML.com, Harold, Elliotte Rusty
- Java Streaming API for XML (Stax) - Tutorial
- XMLPull Patterns Article on XML Pull (and StAX) design patterns by Aleksander Slominski.
- StAX Parser - Cursor & Iterator APIs Article on Cursor & Iterator APIs by HowToDoInJava.