PHP XML Expat (XML Parser Functions)
PHP का Expat-based XML Parser low-level, event-driven parsing प्रदान करता है। यह large XML files के लिए तेज़ और memory-efficient होता है क्योंकि यह पूरा DOM memory में नहीं बनाता — बल्कि XML पढ़ते समय events (start tag, end tag, character data) generate होते हैं जिन्हें handler functions से handle किया जाता है।
- Expat parser functions PHP के लिए event-based parsing provide करते हैं (start element, end element, character data)।
- यह low-level है — बेहतर performance और कम memory footprint के लिए उपयुक्त।
- मुख्य functions:
xml_parser_create(),xml_set_element_handler(),xml_set_character_data_handler(),xml_parse(),xml_parser_free()।
Basic Flow (कदम)
- Parser बनाएं:
xml_parser_create() - Handlers सेट करें: start, end, character data
- XML data पास करें:
xml_parse()(string/file chunk-wise) - Parser free करें:
xml_parser_free()
Simple Example – Parse XML String
नीचे एक सिंपल example है जो start tag, end tag और character data को print करता है।
Start: ITEM
Data: Laptop
End: ITEM
Start: ITEM
Data: Phone
End: ITEM
End: ITEMS
Parsing Large XML Files (Chunk-wise)
Expat parser की खासियत है कि आप file को छोटे-छोटे chunks में read करके parse कर सकते हैं — जिससे memory कम लगे।
Error Handling
XML parsing में error handling बहुत जरूरी है—Expat parser कुछ उपयोगी functions देता है:
xml_get_error_code($parser)– last error code लौटाता है।xml_error_string($code)– error code का readable message देता है।xml_get_current_line_number($parser)– किस line पर error है यह बताता है।xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0)– tag name के case folding को control करता है।
Attributes Access (Example)
Start element handler के अंदर attributes associative array के रूप में मिलते हैं — इन्हें use कर सकते हैं।
जब Expat उपयोग करें — Pros & Cons
Pros:
- Memory efficient — बड़े XML files के लिए अच्छा।
- Fast — event-driven parsing तेज़ होता है।
- Flexible — आप custom handlers से बहुत control ले सकते हैं।
Cons:
- Low-level API — DOM या SimpleXML जितना आसान नहीं।
- State manage करने के लिए आपको खुद structures बनानी पड़ती हैं (stack, current node आदि)।
