TypeScript में XML के साथ कार्य: पार्सिंग से जनरेशन तक
XML (eXtensible Markup Language) डेटा आदान-प्रदान, कॉन्फ़िगरेशन फ़ाइलों और दस्तावेज़ प्रबंधन के लिए प्रमुख प्रारूपों में से एक बना हुआ है। TypeScript पारिस्थितिकी तंत्र में कई शक्तिशाली लाइब्रेरीज़ उपलब्ध हैं जो सख्त टाइपिंग और स्थैतिक विश्लेषण के लाभों को बनाए रखते हुए XML के साथ कुशलतापूर्वक कार्य करने की अनुमति देती हैं। इस लेख में, हम मुख्य उपकरणों, उनकी क्षमताओं की समीक्षा करेंगे और उपयोग के व्यावहारिक उदाहरण प्रस्तुत करेंगे।
XML के साथ कार्य करने के लिए TypeScript का उपयोग क्यों करें?
TypeScript JavaScript में एक प्रकार प्रणाली जोड़ता है, जो जटिल संरचना वाले XML दस्तावेज़ों के साथ कार्य करते समय विशेष रूप से उपयोगी है। आप इंटरफ़ेस के माध्यम से डेटा स्कीमा का वर्णन कर सकते हैं, नेस्टेड तत्वों तक पहुँचने में त्रुटियों से बच सकते हैं, और IDE में स्वतः पूर्णता प्राप्त कर सकते हैं। इसके अलावा, XML के साथ कार्य करने के लिए आधुनिक लाइब्रेरीज़ में प्रकार घोषणाएँ (टाइपिंग) होती हैं, जो उनके उपयोग को अत्यधिक सुरक्षित बनाती हैं।
TypeScript में XML के साथ कार्य करने के लिए मुख्य लाइब्रेरीज़
- fast-xml-parser — सबसे तेज़ और सबसे कार्यात्मक लाइब्रेरी। ऑब्जेक्ट/ऐरे में पार्सिंग, सत्यापन, विशेषताओं, CDATA और नाम स्थानों के साथ कार्य का समर्थन करती है।
- xml2js — क्लासिक पार्सर, जो XML को JavaScript ऑब्जेक्ट्स में परिवर्तित करता है। एसिंक्रोनस पार्सिंग और कस्टम विकल्पों का समर्थन है।
- xmldom — Node.js और ब्राउज़र के लिए DOM पार्सर का कार्यान्वयन। ब्राउज़र DOM की तरह XML ट्री में हेरफेर करने की अनुमति देता है।
- xmlbuilder2 — चेनिंग API और प्रकारों के पूर्ण समर्थन के साथ XML दस्तावेज़ बनाने के लिए आधुनिक लाइब्रेरी।
लाइब्रेरीज़ की स्थापना
आरंभ करने के लिए, npm के माध्यम से एक लाइब्रेरी स्थापित करें। सभी में अंतर्निहित प्रकार घोषणाएँ हैं:
npm install fast-xml-parsernpm install xml2jsnpm install @xmldom/xmldomnpm install xmlbuilder2उदाहरण 1: fast-xml-parser के साथ XML पार्सिंग
XML स्ट्रिंग को टाइप किए गए ऑब्जेक्ट में पार्स करने का मूल उदाहरण देखें:
import { XMLParser } from 'fast-xml-parser';
interface Book { title: string; author: string; year: number; price?: number;}
interface Catalog { catalog: { book: Book | Book[]; };}
const xmlData = ` <catalog> <book> <title>TypeScript Handbook</title> <author>Microsoft</author> <year>2023</year> </book> <book> <title>XML for Developers</title> <author>John Doe</author> <year>2022</year> <price>29.99</price> </book> </catalog>`;
const parser = new XMLParser({ ignoreAttributes: false, attributeNamePrefix: '@_', isArray: (name) => name === 'book',});
const result: Catalog = parser.parse(xmlData);console.log(result.catalog.book[0].title); // "TypeScript Handbook"isArray विकल्प पर ध्यान दें — यह सुनिश्चित करता है कि book तत्व हमेशा एक ऐरे होगा, भले ही XML में केवल एक पुस्तक हो। यह आगे की प्रक्रिया को सरल बनाता है।
उदाहरण 2: xmlbuilder2 के साथ XML निर्माण
xmlbuilder2 लाइब्रेरी XML उत्पन्न करने के लिए एक सुविधाजनक चेनिंग इंटरफ़ेस प्रदान करती है:
import { create } from 'xmlbuilder2';
interface User { id: number; name: string; email: string;}
const user: User = { id: 42, name: 'Alice', email: 'alice@example.com'};
const doc = create({ version: '1.0', encoding: 'UTF-8' }) .ele('users') .ele('user', { id: user.id.toString() }) .ele('name').txt(user.name).up() .ele('email').txt(user.email).up() .up() .up();
const xmlString: string = doc.end({ prettyPrint: true });console.log(xmlString);/*<?xml version="1.0" encoding="UTF-8"?><users> <user id="42"> <name>Alice</name>