OpenReplay Logo
12k
12k

محوّل XML ⇄ JSON

حوّل XML إلى JSON والعكس — تتم المعالجة محليًا في متصفحك، مع التعامل نيابةً عنك مع السمات والعناصر المتكررة وCDATA والمحتوى المختلط.

تتم المعالجة محليًا

حول هذه الأداة

XML وJSON هما التنسيقان النصيان السائدان للبيانات المهيكلة، لكنهما يتطابقان مع أشكال مختلفة: يحمل XML العناصر والسمات والنص المختلط وCDATA، بينما يضم JSON الكائنات والمصفوفات والقيم الأولية المُصنّفة. يحلّل هذا المحوّل XML بمُحلّل رموز خاص به (دون DOMParser) ويطبّق تطابقًا متوقعًا — تصبح السمات مفاتيح "@name"، وتصبح العناصر النصية البحتة قيمًا نصية، وتنطوي العناصر الشقيقة المتكررة في مصفوفات، ويحتفظ العنصر الذي يحمل سمات أو عناصر فرعية ونصًا في آنٍ واحد بذلك النص تحت مفتاح "#text". تُقرأ CDATA كنص؛ وتُسقَط التعليقات وإعلان XML. يُجري التحويل من JSON → XML القواعد نفسها بشكل عكسي، مع تهريب قيم النص والسمات والمسافة البادئة بمسافتين.

استخدمه لتغذية حمولة SOAP أو RSS قديمة إلى واجهة برمجة تطبيقات تقبل JSON فقط، أو لفحص إعداد XML كثيف كشجرة كائنات قابلة للتصفح، أو لإجراء تحويل ذهابًا وإيابًا لمستند والتأكد من بقاء بنيته سليمة. يحوّل خيار "Auto-type values" التطابقات النصية الكاملة مثل "42" و"true" و"null" إلى أرقام وقيم منطقية وnull حقيقية في JSON كي لا تضطر الشيفرة اللاحقة إلى إعادة تحليل النصوص — أوقف تشغيله عندما تحتاج إلى أن تبقى كل ورقة نصًا. في وضع JSON → XML، عيّن اسم العنصر الجذري المستخدم عندما لا يكون JSON كائنًا أحادي المفتاح.

يُجرى كلا التحويلين بالكامل في متصفحك — لا يُرفع أي XML أو JSON إلى خادم على الإطلاق.

الأسئلة الشائعة

كيف تُمثَّل سمات XML في مخرجات JSON؟

تصبح كل سمة مفتاحًا مسبوقًا بـ "@" على كائن العنصر — على سبيل المثال يصبح <book id="42"> هو {"book": {"@id": 42}}. ويعيد تحويل JSON إلى XML تحويل أي مفتاح مسبوق بـ "@" إلى سمة.

ماذا يحدث للعناصر المتكررة في XML وللمحتوى النصي المختلط؟

تُجمَّع العناصر الشقيقة التي تتشارك اسم وسم واحد في مصفوفة JSON. وعندما يحمل عنصر سمات أو عناصر فرعية إضافةً إلى نصه الخاص، يُخزَّن ذلك النص تحت مفتاح "#text" كي لا يُفقَد شيء.

هل يتعامل المحوّل مع CDATA والتعليقات وإعلان XML؟

تُقرأ أقسام CDATA كنص عادي وتُدمَج في قيمة العنصر. وتُسقَط التعليقات وإعلان <?xml ... ?>، لأن أيًّا منهما لا يحمل بيانات تتطابق بنظافة مع JSON.