पीएचपी एक्सएमएल एक्सपैट पार्सर
एक्सएमएल क्या है?
बिन्दुओं में एक्सएमएल डिस्क्रिबर है, जिसका फोकस डाटा क्या है यह है। एक्सएमएल फ़ाइल डाटा की संरचना का वर्णन करती है。
एक्सएमएल क्या है?
एक्सएमएल में, कोई पूर्व-परिभाषित टैग नहीं है। आपको अपने टैग को परिभाषित करना होगा。
यदि आप एक्सएमएल के बारे में अधिक जानना चाहते हैं, हमारे XML शिक्षा。
Expat क्या है?
यदि आप एक्सएमएल दस्तावेज़ को पढ़ने और अद्यतन करने के लिए - एक्सएमएल दस्तावेज़ को बनाने और संभालने के लिए आवश्यक है - तो आपको एक्सएमएल पार्सर की जरूरत है。
दो प्रमुख एक्सएमएल पार्सर किस्में हैं:
- ट्री-आधारित पार्सरइस पार्सर को एक्सएमएल दस्तावेज़ को ट्री संरचना में बदला जाता है। यह पूरा दस्तावेज़ का विश्लेषण करता है और एपीआई को उपलब्ध कराता है, जिससे ट्री में एलीमेंट्स, जैसे कि डॉक्यूमेंट ऑब्जैक्ट मॉडल (DOM) को अभिगमित किया जा सकता है。
- घटना-आधारित पार्सरएक्सएमएल दस्तावेज़ को घटनाओं की तालिका के रूप में देखें। जब किसी विशेष घटना का अवसर होता है, पार्सर फ़ंक्शन को बुलाता है ताकि इसे संभाला जा सके。
Expat पार्सर घटना-आधारित पार्सर है。
घटना-आधारित पार्सर एक्सएमएल दस्तावेज़ के सामग्री पर केंद्रित होता है, न कि उनके परिणाम पर। इसलिए, घटना-आधारित पार्सर तारा-आधारित पार्सरों की तुलना में तेज़ी से डाटा पहुँच सकता है。
नीचे दिए हुए एक्सएमएल खण्ड को देखिए:
<from>जॉन</from>
घटना-आधारित पार्सर ऊपरी एक्सएमएल को तीन घटनाओं के एक तालिका के रूप में रिपोर्ट करता है:
- शुरू एलीमेंट: from
- CDATA खंड शुरू, मान: जॉन
- बंद एलीमेंट: from
ऊपरी एक्सएमएल उदाहरण रूपाकार एक्सएमएल शामिल करता है। लेकिन यह उदाहरण अवैध एक्सएमएल है क्योंकि इसके साथ डॉक्यूमेंट टाइप घोषणा (DTD) नहीं है और न ही भीतरी DTD है。
फिर भी, Expat पार्सर का इस्तेमाल करते समय, इसमें कोई भी अंतर नहीं है। Expat एक वैधता-जांच न करने वाला पार्सर है, और किसी भी DTD को नज़रअंदाज़ करता है。
एक घटना-आधारित और अनवेरिफ़ाइड एक्सएमएल पार्सर के रूप में, Expat तेज़ और हल्का है, इसलिए यह PHP के वेब अनुप्रयोगों के लिए बहुत उपयुक्त है。
टिप्पणी:XML दस्तावेज़ को रूपाकार बनाना आवश्यक है, नहीं तो Expat त्रुटि पैदा करेगा。
स्थापना
XML Expat पार्सर PHP के केंद्रीय हिस्से है। इन फ़ंक्शनों को स्थापित किए बिना इस्तेमाल किया जा सकता है。
XML फ़ाइल
हमारे उदाहरण में नीचे दिए हुए XML फ़ाइल का उपयोग किया जाएगा:
<?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>जॉर्ज</to> <from>जॉन</from> <heading>रिमाइंडर</heading> <body>बुलेंट की बैठक को न भूलें!</body> </note>
XML पार्सर चालू करना
हम PHP में XML पार्सर चालू करना चाहते हैं, विभिन्न XML घटनाओं के लिए हैंडलर निर्दिष्ट करने के लिए और इस XML फ़ाइल को पार्स करने के लिए。
उदाहरण
<?php //Initialize the XML parser $parser=xml_parser_create(); //Function to use at the start of an element function start($parser,$element_name,$element_attrs) { switch($element_name) { case "NOTE": echo "-- Note --<br />"; break; case "TO": echo "To: "; break; case "FROM": echo "From: "; break; case "HEADING": echo "Heading: "; break; case "BODY": echo "Message: "; } } //Function to use at the end of an element function stop($parser,$element_name) { echo "<br />"; } //Function to use when finding character data function char($parser,$data) { echo $data; } //Specify element handler xml_set_element_handler($parser,"start","stop"); //Specify data handler xml_set_character_data_handler($parser,"char"); //Open XML file $fp=fopen("test.xml","r"); //Read data while ($data=fread($fp,4096)) { xml_parse($parser,$data,feof($fp)) or die (sprintf("XML Error: %s at line %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); } // XML पार्सर फ़्री करें xml_parser_free($parser); ?>
इस कोड का आउटपुट:
-- नोट -- तक: जॉर्ज से: जॉन शीर्षक: रेमाइंडर संदेश: बैठक को नहीं भूलें!
कामकाज की सचेतना:
- xml_parser_create() फ़ंक्शन के द्वारा XML पार्सर को शुरू करें
- विभिन्न इवेंट हैंडलर के साथ मेल खाते फ़ंक्शन को बनाएं
- xml_set_element_handler() फ़ंक्शन को जोड़कर शुरू और समाप्त टैग को मिलने पर कौन-सा फ़ंक्शन चलाना है, इसे निर्धारित करें
- xml_set_character_data_handler() फ़ंक्शन को जोड़कर चारकर्टर डाटा मिलने पर कौन-सा फ़ंक्शन चलाना है, इसे निर्धारित करें
- xml_parse() फ़ंक्शन के द्वारा "test.xml" फ़ाइल को पार्स करें
- यदि त्रुटि होने वाली है, xml_error_string() फ़ंक्शन को जोड़कर XML त्रुटि को पाठ वर्णन में बदलें
- xml_parser_create() फ़ंक्शन को असामर्थ्य करने के लिए xml_parser_free() फ़ंक्शन का आह्वान करें
PHP एक्सपैट पार्सर के बारे में अधिक जानकारी
PHP एक्सपैट फ़ंक्शन के बारे में अधिक जानकारी के लिए हमारे PHP एक्सएमएल पार्सर संदर्भ दस्तावेज पर जाएं