ما هو تحويل XML ↔ JSON؟
XML (لغة الترميز القابلة للتمديد) صيغة نصية قائمة على الوسوم للبيانات الهرمية. ستراها في خدمات SOAP ومصادر RSS وAtom وسجلات HL7 FHIR الصحية وملفات sitemap.xml وملفات الإعداد الشحينة مع Maven وSpring وAndroid Gradle. JSON (JavaScript Object Notation، مُعرَّف في RFC 8259) يصف النوع ذاته من البيانات المتداخلة، لكن بالأقواس والمصفوفات بدلاً من الوسوم الافتتاحية والإغلاقية. JSON هو ما تتحدثه تقريباً كل واجهة REST API اليوم، وهو شكل القيمة الأصلي لكل بيئة تشغيل في المتصفح. التحويل بين الصيغتين من الأعمال التي تبدو بسيطة حتى تصطدم بالسمات والمحتوى المختلط والأطفال المتكررين وCDATA. تعبير regex مخصص هو الإجابة الخاطئة؛ المحلل الحقيقي هو الإجابة الصحيحة. تشحن هذه الأداة محللاً حقيقياً (fast-xml-parser) وتُشغّله في متصفحك، فتستطيع لصق غلاف XML مُرجَع من خدمة SOAP قديمة ومشاهدته يصبح كائن JSON يمكنك إدراجه مباشرةً في متجر Redux، أو أخذ حمولة JSON جمّعتها في عميل REST وإعادتها إلى شكل XML لا تزال نقطة نهاية مؤسسية تتوقعه.
كيف يعمل التحويل بين XML وJSON؟
كل تحويل يُشغَّل محلياً في متصفحك باستخدام مكتبة fast-xml-parser المُدرجة (MIT، الإصدار 4.x). قواعد التحويل على مستوى عالٍ:
- العنصر إلى مفتاح: كل اسم عنصر XML يصبح مفتاح كائن JSON.
<user><name>Alice</name></user>يُحوَّل إلى{"user":{"name":"Alice"}}. - السمة إلى مفتاح مُبادَر: تُخزَّن السمة تحت مفتاح مُشكَّل بإضافة البادئة المختارة. مع البادئة
@، يُنتج<user id="1">القيمة{"user":{"@id":"1"}}. - المحتوى النصي إلى مفتاح عقدة النص: حين يمتلك عنصر سمات ونصاً معاً، يقع النص تحت مفتاح عقدة النص المختار.
<price currency="USD">9.99</price>مع المفتاح#textيُنتج{"price":{"@currency":"USD","#text":"9.99"}}. - الأطفال المتكررون إلى مصفوفة: حين يكون خيار فرض مصفوفة لوسوم الأطفال المتكررة مُفعَّلاً، تتقلص العناصر الشقيقة المتعددة ذات الاسم الواحد في مصفوفة JSON.
<items><item>A</item><item>B</item></items>يصبح{"items":{"item":["A","B"]}}. - أقسام CDATA: النص الخام داخل
<![CDATA[…]]>يُحفظ تحت مفتاح#cdataكي لا تُعاد إزاحة الأقواس الزاوية والعلامات & خلال الرحلة الذهاب والإياب. - JSON إلى XML يعكس التحويل: مفاتيح الكائنات تصبح عناصر، والمفاتيح المُبادَرة تصبح سمات، والمصفوفات تتمدد إلى عناصر شقيقة متكررة.
لماذا تحوِّل XML وJSON بهذه الأداة؟
- بياناتك تبقى على جهازك. كل تحليل وكل بناء يُشغَّل في سياق JavaScript الخاص بهذه الصفحة. حزم مرضى FHIR وغلافات مصادقة SOAP وملفات الإعداد الخاصة وصادرات الفوترة — لا شيء منها يلمس خوادمنا، لأنه لا توجد خطوة رفع في مسار الشيفرة. افتح لوحة الشبكة وراقب.
- SOAP القديمة إلى واجهة أمامية REST-first هو أكثر طلب نسمعه. يُعرّض بنك أو شركة تأمين نقطة نهاية SOAP لن تُتقاعَد لسنوات؛ تطبيق React أو Vue الذي يستدعيها لا يريد تعلّم XML. الصق الغلاف، واحصل على JSON بالسمات مُبادَرة ومساحات الأسماء محفوظة، وأدرج محتويات
Bodyفي متجر حالتك. - مستهلكو RSS وAtom وخرائط الموقع يستفيدون أيضاً. دليل بودكاست أو مُجمِّع أخبار أو لوحة تحكم داخلية تستهلك
sitemap.xmlيستطيع تخطي كتابة محلل XML كلياً. حوِّل التغذية مرةً واحدة، واعمل مع مصفوفة JSON، وتبقى شيفرة عميلك في اللغة التي تتقنها. - تصدير الإعداد يُكمل القائمة. بناءات Maven وSpring وAndroid Gradle وAnt القديمة تُصدر كلها XML؛ الأدوات الأصلية للسحابة على الطرف الآخر (Terraform وAnsible وGitHub Actions وcloud-init) تقرأ JSON أو YAML. حوِّل في المتصفح بدلاً من تشغيل سكريبت Python باعتمادية تابعة، مفيد بشكل خاص في البيئات المعزولة حيث اللصق في خدمة ويب مجهولة أمر غير مقبول.
ما هي التطبيقات الشائعة لتحويل XML ↔ JSON؟
تجسير XML وJSON يظهر عبر هندسة التكامل وأدوات API وهندسة البيانات. بضعة أنماط تهيمن على العمل:
- تجسير SOAP إلى REST: سحب حمولة
Bodyمن غلاف SOAP مُرجَع من واجهة مصرف أو تأمين قديمة وتحويلها إلى JSON كي تستهلكها واجهة React أو Vue الأمامية بدون طبقة وكيل على جهة الخادم. - سجلات FHIR الصحية: تحويل حزم FHIR XML من HL7 (الصيغة المطلوبة من HHS/ONC وNHS Digital لتبادل البيانات السريرية) إلى JSON للتحميل في مجموعة MongoDB Atlas أو عمود PostgreSQL JSONB حيث يستطيع المحللون الاستعلام عنها.
- معالجة خرائط المواقع والتغذيات: تحويل
sitemap.xmlأو تغذية RSS/Atom إلى مصفوفة JSON كي يتكرر عليها فهرس مخصص أو بوت Slack أو ودجت لوحة تحكم دون استقدام محلل XML كاعتمادية.
كيف تبدو رحلة ذهاب وإياب XML ↔ JSON؟
خذ مثالاً صغيراً. الصق <user id="1"><name>Alice</name></user> في المدخل، واضبط بادئة السمة على @، واتركه على XML إلى JSON، واضغط تحويل. الناتج هو {"user":{"@id":"1","name":"Alice"}}. بدِّل الوضع إلى JSON إلى XML، والصق ذلك JSON، واضبط المسافة البادئة على مسافتين، واضغط تحويل مرةً أخرى. ستحصل على <user id="1">\n <name>Alice</name>\n</user>، مطابقاً هيكلياً للأصل. الشيء الوحيد غير المضمون عبر الرحلة هو ترتيب السمات، لأن مفاتيح كائن JSON غير مرتبة بالمواصفة.
يشحن هذا المحوِّل XML ↔ JSON مكتبة fast-xml-parser@4 من الأصل ذاته، ويتعامل مع السمات وCDATA ووسوم الأطفال المتكررة وبادئات مساحات الأسماء، ويستمر في العمل دون اتصال بعد تحميل الصفحة. لا خطوة رفع، لا وكيل CDN، لا رمز تتبع تحليلي، لا قياسات من أي نوع. كل بايت من المدخل والناتج يبقى في متصفحك، وهو بالضبط ما تريده حين تكون الحمولة حزمة مريض FHIR أو غلاف مصادقة SOAP أو أي شكل بيانات لا يجب أن يراه أحد خارج فريقك.