PHP में XML के साथ काम करना: सरल पार्सिंग से लेकर जटिल डॉक्यूमेंट बनाने तक
XML (eXtensible Markup Language) डेटा एक्सचेंज, कॉन्फ़िगरेशन फ़ाइलों और वेब सर्विसेज (SOAP, RSS/Atom) के लिए एक महत्वपूर्ण फ़ॉर्मेट है। PHP में XML के साथ काम करने के लिए कई शक्तिशाली बिल्ट-इन एक्सटेंशन मौजूद हैं, जो साधारण RSS फ़ीड पार्स करने से लेकर नेमस्पेस वाले जटिल डॉक्यूमेंट जनरेट करने तक हर काम को आसान बनाते हैं। इस आर्टिकल में हम मुख्य टूल्स: SimpleXML, DOMDocument और XMLReader को विस्तार से समझेंगे, और चलते-फिरते XML डॉक्यूमेंट बनाना भी सीखेंगे।
1. SimpleXML — तेज़ और आसान पार्सिंग
SimpleXML XML के साथ काम करने का सबसे सरल एक्सटेंशन है। यह XML डॉक्यूमेंट को एक ऑब्जेक्ट में बदल देता है, जिसके प्रॉपर्टीज़ को आप सामान्य ऐरे और ऑब्जेक्ट की तरह पढ़ सकते हैं। यह छोटे और मीडियम डॉक्यूमेंट के लिए परफेक्ट है, जब जटिल नेविगेशन की ज़रूरत न हो।
स्ट्रिंग या फ़ाइल से XML लोड करना
<?php
// स्ट्रिंग से
$xmlString = '<book><title>शुरुआत के लिए PHP</title><author>रवि कुमार</author></book>';
$book = simplexml_load_string($xmlString);
// फ़ाइल से
$books = simplexml_load_file('books.xml');
echo $book->title; // शुरुआत के लिए PHP
echo $book->author; // रवि कुमार
?>
एट्रीब्यूट और मल्टीपल एलिमेंट के साथ काम करना
<?php
$xml = '<library>
<book id="1">
<title>PHP ऑब्जेक्ट्स</title>
<author>मैट ज़ैंडस्ट्रा</author>
</book>
<book id="2">
<title>क्लीन कोड</title>
<author>रॉबर्ट सी. मार्टिन</author>
</book>
</library>';
$library = simplexml_load_string($xml);
foreach ($library->book as $book) {
echo 'ID: ' . $book['id'] . ' — ' . $book->title . ' (' . $book->author . ')<br>';
}
// ID: 1 — PHP ऑब्जेक्ट्स (मैट ज़ैंडस्ट्रा)
// ID: 2 — क्लीन कोड (रॉबर्ट सी. मार्टिन)
?>
ध्यान दें: SimpleXML कंडीशन वाले जटिल XPath क्वेरी को सपोर्ट नहीं करता (सिर्फ़ सरल पाथ)। अधिक शक्तिशाली क्वेरी के लिए DOMDocument या XPath का उपयोग करें।
2. DOMDocument — XML पर पूरा नियंत्रण
DOMDocument W3C DOM API को इम्प्लीमेंट करता है और डॉक्यूमेंट स्ट्रक्चर पर पूरा नियंत्रण देता है। आप किसी भी नोड को जोड़, हटा, बदल सकते हैं, नेमस्पेस के साथ काम कर सकते हैं और किसी भी जटिलता का XPath क्वेरी चला सकते हैं। यह प्रोफेशनल कामों के लिए सबसे अच्छा विकल्प है।
DOMDocument के साथ पार्सिंग और नेविगेशन
<?php
$dom = new DOMDocument();
$dom->load('books.xml');
// सभी <book> एलिमेंट प्राप्त करें
$books = $dom->getElementsByTagName('book');
foreach ($books as $book) {
$title = $book->getElementsByTagName('title')->item(0)->nodeValue;
$author = $book->getElementsByTagName('author')->item(0)->nodeValue;
echo "किताब: $title, लेखक: $author<br>";
}
?>
XPath — XML के लिए शक्तिशाली क्वेरी
<?php
$dom = new DOMDocument();
$dom->load('library.xml');
$xpath = new DOMXPath($dom);
// 500 से अधिक कीमत वाली सभी किताबें खोजें
$expensiveBooks = $xpath->query('//book[price > 500]');
foreach ($expensiveBooks as $book) {
echo $book->getElementsByTagName('title')->item(0)->nodeValue . ' — ' .
$book->getElementsByTagName('price')->item(0)->nodeValue . ' रुपये<br>';
}
?>
3. XML डॉक्यूमेंट बनाना
PHP सिर्फ़ XML पढ़ना ही नहीं, बल्कि XML डॉक्यूमेंट बनाना भी सिखाता है। आइए दोनों तरीकों को समझते हैं।
SimpleXML के ज़रिए XML बनाना
<?php
$xml = new SimpleXMLElement('<catalog></catalog>');
$product = $xml->addChild('product');
$product->addChild('name', 'लैपटॉप');
$product->addChild('price', 75000);
$product->addAttribute('id', '123');
// फ़ाइल में सेव करें
$xml->asXML('catalog.xml');
echo $xml->asXML();
?>
DOMDocument के साथ XML बनाना
<?php
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->formatOutput = true;
$root = $dom->createElement('catalog');
$dom->appendChild($root);
$product = $dom->createElement('product');
$root->appendChild($product);
$name = $dom->createElement('name', 'स्मार्टफोन');
$product->appendChild($name);
$price = $dom->createElement('price', 25000);
$product->appendChild($price);
$idAttr = $dom->createAttribute('id');
$idAttr->value = '456';
$product->appendChild($idAttr);
echo $dom->saveXML();
// या फ़ाइल में सेव करें: $dom->save('catalog.xml');
?>
4. बड़ी XML फ़ाइलों के लिए XMLReader
अगर आप बहुत बड़ी XML फ़ाइलों (जैसे 100MB+) के साथ काम कर रहे हैं, तो XMLReader सबसे अच्छा विकल्प है। यह पूरी फ़ाइल को मेमोरी में लोड नहीं करता, बल्कि स्ट्रीम की तरह प्रोसेस करता है।
<?php
$reader = new XMLReader();
$reader->open('large_file.xml');
while ($reader->read()) {
if ($reader->nodeType == XMLReader::ELEMENT && $reader->localName == 'record') {
// हर <record> एलिमेंट को प्रोसेस करें
$xmlString = $reader->readOuterXML();
$record = simplexml_load_string($xmlString);
echo $record->name . '<br>';
}
}
$reader->close();
?>
5. XML वैलिडेशन और एरर हैंडलिंग
XML के साथ काम करते समय वैलिडेशन बहुत ज़रूरी है। PHP में DTD या XSD स्कीमा के खिलाफ XML को वैलिडेट करने के विकल्प मौजूद हैं।
<?php
$dom = new DOMDocument();
$dom->load('books.xml');
// DTD के खिलाफ वैलिडेट करें
if ($dom->validate()) {
echo "यह XML वैलिड है!";
} else {
echo "XML वैलिड नहीं है।";
}
// XSD स्कीमा के खिलाफ वैलिडेट करें
if ($dom->schemaValidate('schema.xsd')) {
echo "XML स्कीमा के अनुसार सही है।";
}
?>
निष्कर्ष
PHP में XML के साथ काम करना बहुत आसान है, चाहे आप SimpleXML का उपयोग करें या DOMDocument का। छोटे प्रोजेक्ट के लिए SimpleXML तेज़ और सरल है, जबकि जटिल ज़रूरतों के लिए DOMDocument ज़्यादा लचीलापन देता है। बड़ी फ़ाइलों के लिए XMLReader का उपयोग करें और हमेशा अपने XML को वैलिडेट करना न भूलें।
अब आप PHP में XML पार्सिंग, क्रिएशन और प्रोसेसिंग के लिए पूरी तरह तैयार हैं! अपने प्रोजेक्ट में इन तकनीकों को आज़माएं और कोडिंग का मज़ा लें।