العمل مع XML في JavaScript (Node.js): التحليل والإنشاء والتحقق من الصحة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة في العمل مع XML في بيئة Node.js



XML (لغة الترميز القابلة للتوسيع) لا يزال تنسيقًا مطلوبًا لتخزين ونقل البيانات المنظمة، خاصة في الأنظمة المؤسسية والبروتوكولات الطبية وواجهات API القديمة. في نظام Node.js البيئي، توجد عدة مكتبات ناضجة تسمح بتحليل وإنشاء وتعديل مستندات XML بكفاءة. في هذه المقالة، سنستعرض الأدوات الرئيسية: fast-xml-parser و xml2js و xmlbuilder2 و xpath.



تثبيت الحزم اللازمة



للبدء، قم بتثبيت الحزم عبر npm:



npm install fast-xml-parser xml2js xmlbuilder2 xpath


1. تحليل XML باستخدام fast-xml-parser



fast-xml-parser هي المكتبة الأكثر أداءً لتحليل XML في JavaScript. وهي تدعم السمات ومساحات الأسماء والتحويل إلى JSON.



التحليل الأساسي



const { XMLParser } = require('fast-xml-parser');

const xmlData = `<bookstore> <book category="fiction"> <title lang="en">The Great Gatsby</title> <author>F. Scott Fitzgerald</author> <year>1925</year> </book></bookstore>`;

const parser = new XMLParser({ ignoreAttributes: false, // الاحتفاظ بالسمات attributeNamePrefix: '@_' // بادئة للسمات});

const result = parser.parse(xmlData);console.log(result.bookstore.book[0].title);// 'The Great Gatsby'console.log(result.bookstore.book[0]['@_category']);// 'fiction'


التحليل مع التحقق من الأخطاء



const { XMLParser, XMLValidator } = require('fast-xml-parser');

const invalidXml = '<root><item>Unclosed';

if (XMLValidator.validate(invalidXml) === true) { const parser = new XMLParser(); const data = parser.parse(invalidXml);} else { console.error('XML غير صحيح'); // الإخراج: true (إذا كان صحيحًا) أو كائن خطأ}


2. مكتبة xml2js — تحويل مناسب إلى JSON



xml2js توفر واجهة برمجة تطبيقات موجهة نحو الاستدعاءات وتدعم إعدادات التحليل المخصصة.



const xml2js = require('xml2js');const parser = new xml2js.Parser({    explicitArray: false, // عدم تغليف العناصر الفردية في مصفوفة    attrkey: 'attributes'});

const xml = `<person id="123"> <name>John Doe</name> <age>30</age></person>`;

parser.parseString(xml, (err, result) => { if (err) { console.error('خطأ في التحليل:', err); return; } console.log(result.person.name); // 'John Doe' console.log(result.person.attributes.id); // '123'});


غلاف Promise لـ xml2js



const { parseStringPromise } = require('xml2js');

async function parseXML(xmlString) { try { const data = await parseStringPromise(xmlString, { explicitArray: false }); return data; } catch (error) { console.error('خطأ:', error.message); }}


3. إنشاء XML باستخدام xmlbuilder2



xmlbuilder2 هي مكتبة حديثة لتوليد مستندات XML بواجهة متسلسلة (fluent API).



إنشاء XML بسيط



const { create } = require('xmlbuilder2');

const doc = create({ version: '1.0', encoding: 'UTF-8' }) .ele('catalog') .ele('book', { id: 'b1' }) .ele('title').txt('JavaScript: The Good Parts').up() .ele('author').txt('Douglas Crockford').up() .ele('price', { currency: 'USD' }).txt('29.99').up() .up() .end({ prettyPrint: true });

console.log(doc);


النتيجة:



<?xml version="1.0" encoding="UTF-8"?><catalog>  <book id="b1">    &l                    

توصيات