TypeScript में XML के साथ कार्य: लाइब्रेरीज़ और व्यावहारिक उदाहरण
XML (eXtensible Markup Language) डेटा आदान-प्रदान, कॉन्फ़िगरेशन फ़ाइलों और पुराने सिस्टम के साथ एकीकरण के लिए एक लोकप्रिय प्रारूप बना हुआ है। JSON की लोकप्रियता के बावजूद, कई enterprise-समाधान, SOAP-सेवाएँ और डेटा प्रारूप (जैसे SVG, RSS, XSLT) अभी भी XML का उपयोग करते हैं। TypeScript में, स्थैतिक टाइपिंग के कारण, XML के साथ कार्य अधिक विश्वसनीय और पूर्वानुमानित हो जाता है। इस लेख में, हम TypeScript में XML दस्तावेज़ों के पार्सिंग, निर्माण और सत्यापन के लिए सर्वोत्तम लाइब्रेरीज़ पर चर्चा करेंगे।
TypeScript में XML के साथ कार्य के लिए मुख्य लाइब्रेरीज़
आजकल कई परिपक्व लाइब्रेरीज़ हैं जो TypeScript के साथ बढ़िया काम करती हैं। आइए तीन सबसे लोकप्रिय लाइब्रेरीज़ पर नज़र डालें:
- fast-xml-parser — JavaScript/TypeScript में XML पार्स करने के लिए सबसे तेज़ लाइब्रेरी। यह सत्यापन, JSON में रूपांतरण और वापसी का समर्थन करती है।
- xml2js — सरल API वाली एक क्लासिक लाइब्रेरी, XML को JavaScript ऑब्जेक्ट्स में बदलती है। इसमें @types/xml2js के माध्यम से TypeScript के लिए अंतर्निहित समर्थन है।
- xmldom — Node.js के लिए DOM Level 2 का कार्यान्वयन, जो आपको XML के साथ DOM-ट्री के रूप में काम करने की अनुमति देता है (ब्राउज़र DOMParser के समान)।
स्थापना और सेटअप
आरंभ करने के लिए, npm के माध्यम से एक लाइब्रेरी स्थापित करें:
npm install fast-xml-parser xml2js xmldom @types/xml2jsअब प्रत्येक लाइब्रेरी के लिए व्यावहारिक उदाहरण देखें।
उदाहरण 1: fast-xml-parser के साथ XML पार्सिंग
fast-xml-parser उच्च प्रदर्शन और XML को सामान्य TypeScript ऑब्जेक्ट्स में बदलने के लिए एक सुविधाजनक API प्रदान करता है।
import { XMLParser, XMLBuilder, XMLValidator } from 'fast-xml-parser';
// मूल XMLconst xmlData = `<?xml version="1.0" encoding="UTF-8"?><catalog> <book id="101"> <title>TypeScript Handbook</title> <author>Microsoft</author> <price currency="USD">29.99</price> </book> <book id="102"> <title>Node.js Design Patterns</title> <author>Mario Casciaro</author> <price currency="EUR">34.50</price> </book></catalog>`;
// पार्सर सेटिंग्सconst parser = new XMLParser({ ignoreAttributes: false, // विशेषताओं को सहेजें attributeNamePrefix: '@_', // विशेषताओं के लिए उपसर्ग textNodeName: '#text', // टेक्स्ट नोड्स के लिए नाम isArray: (tagName) => ['book'].includes(tagName) // <book> के लिए हमेशा ऐरे लौटाएँ});
// पार्सिंगconst result = parser.parse(xmlData);console.log(JSON.stringify(result, null, 2));
// परिणाम का टाइपिंगinterface Book { '@_id': string; title: string; author: string; price: { '@_currency': string; '#text': string; };}
interface Catalog { catalog: { book: Book[]; };}
const catalog = result as Catalog;console.log(`पहली पुस्तक: ${catalog.catalog.book[0].title}`);isArray पैरामीटर पर ध्यान दें — यह सुनिश्चित करता है कि book तत्व हमेशा एक ऐरे होगा, भले ही XML में केवल एक पुस्तक हो।
उदाहरण 2: xml2js के साथ XML बनाना
xml2js लाइब्रेरी JavaScript ऑब्जेक्ट्स से XML बनाने के लिए सुविधाजनक है। यह सीरियलाइज़ेशन के लिए Builder का उपयोग करती है।
import { Builder } from 'xml2js';
// XML में बदलने के लिए ऑब्जेक्टconst data = { root: { $: { version: '1.0', encoding: 'UTF-8' }, user: [ { $: { id: '1', active: 'true' }, name: 'इवान पेत्रोव', email: 'ivan@example.com', roles: { role: ['admin', 'editor'] } }, { $: { id: '2', active: 'false' }, name: 'मारिया सिदोरोवा', email: 'maria@example.com', roles: { role: ['viewer']