مقدمة في معالجة XML في بيئة Node.js
XML (لغة الترميز القابلة للتوسيع) لا يزال تنسيقًا مطلوبًا لتخزين ونقل البيانات المنظمة، خاصة في الأنظمة المؤسسية وخدمات SOAP وملفات التكوين وحلول التكامل. في نظام Node.js البيئي، توجد عدة مكتبات ناضجة تتيح تحليل وإنشاء وتعديل مستندات XML بكفاءة. في هذه المقالة، سنستعرض ثلاث أدوات رئيسية: xml2js (لتحويل XML إلى JSON والعكس)، و fast-xml-parser (محلل عالي الأداء)، و xmldom (تطبيق DOM Level 2 لـ Node.js).
1. مكتبة xml2js: البساطة والتنوع
xml2js هي واحدة من أشهر المكتبات للعمل مع XML في Node.js. مهمتها الرئيسية هي تحويل XML إلى كائنات JavaScript (JSON) والعكس. هذا هو الخيار المثالي عندما تحتاج إلى دمج بيانات XML بسرعة في تطبيق JavaScript حديث.
التثبيت
npm install xml2jsمثال: تحليل XML إلى JSON
const xml2js = require('xml2js');const parser = new xml2js.Parser({ explicitArray: false });
const xmlData = `<bookstore> <book category="programming"> <title lang="en">Learning Node.js</title> <author>John Doe</author> <price>29.99</price> </book></bookstore>`;
parser.parseString(xmlData, (err, result) => { if (err) { console.error('خطأ في التحليل:', err); return; } console.log(JSON.stringify(result, null, 2)); // الإخراج: { bookstore: { book: { category: "programming", title: "Learning Node.js", author: "John Doe", price: "29.99" } } }});مثال: إنشاء XML من JSON
const xml2js = require('xml2js');const builder = new xml2js.Builder({ headless: true });
const jsonObj = { root: { $: { xmlns: "http://example.com/ns" }, item: [ { $: { id: "1" }, _: "العنصر الأول" }, { $: { id: "2" }, _: "العنصر الثاني" } ] }};
const xml = builder.buildObject(jsonObj);console.log(xml);/* الإخراج:<root xmlns="http://example.com/ns"> <item id="1">العنصر الأول</item> <item id="2">العنصر الثاني</item></root>*/الإمكانيات الرئيسية:
- تحويل تلقائي للسمات (بادئة
$) والمحتوى النصي (بادئة_) - تخصيص المحلل:
explicitArray،explicitRoot،attrkey،charkey - دعم مساحات الأسماء (namespaces)
- معالجة الملفات الكبيرة عبر التدفقات (streaming parsing)
2. fast-xml-parser: الأداء والمرونة
إذا كنت بحاجة إلى أقصى سرعة في التحليل (على سبيل المثال، عند معالجة آلاف ملفات XML أو في تطبيقات الوقت الفعلي)، فانتبه إلى fast-xml-parser. هذا المحلل مكتوب بلغة JavaScript نقية، ولكنه محسّن للأداء العالي.
التثبيت
npm install fast-xml-parserمثال: تحليل سريع مع التحقق من الصحة
const { XMLParser, XMLBuilder, XMLValidator } = require('fast-xml-parser');
const xmlData = `<config> <database host="localhost" port="5432"> <user>admin</user> <password>secret</password> </database></config>`;
// التحقق من الصحةconst validationResult = XMLValidator.validate(xmlData);if (validationResult !== true) { console.error('XML غير صالح:', validationResult.err); process.exit(1);}
// التحليلconst parser = new XMLParser({ ignoreAttributes: false, attributeNamePrefix: "@_"});const jsonObj = parser.parse(xmlData);console.log(jsonObj.config.database["@_host"]); // localhostconsole.log(jsonObj.config.datab