محول JSON إلى XML

الصق JSON على اليمين، احصل على XML منسق على اليسار. المفاتيح بالبادئة @_ تصبح خصائص. بدون رفع.

  1. الصق JSON في منطقة النص اليمنى.
  2. انقر «التحويل إلى XML». تصبح مفاتيح JSON عناصر؛ ومفاتيح @_ سمات.
  3. انسخ XML المنسق أو نزّله.
  4. لُف بياناتك بمفتاح جذر واحد — يحتاج XML إلى عنصر واحد على المستوى الأعلى.
ماذا تفعل؟

يحوّل كائن JSON إلى XML باستخدام اصطلاح fast-xml-parser. تصبح خصائص الكائن عناصر فرعية؛ والخصائص ذات البادئة `@_` تصبح سمات على الأب؛ وتصبح المصفوفات عناصر شقيقة متكررة بنفس اسم الوسم. تخرج الأرقام والقيم البولية والسلاسل كمحتوى نصي. يُكتَب المخرج بإزاحة لتسهيل القراءة.

مثال

مدخل JSON:

{
  "root": {
    "@_version": 1,
    "name": "Ada",
    "tags": ["math", "logic"]
  }
}

مخرج XML:

<root version="1">
  <name>Ada</name>
  <tags>math</tags>
  <tags>logic</tags>
</root>

مزالق شائعة من JSON إلى XML

XML أكثر صرامة من JSON بشأن البنية. تغطي الأنماط أدناه معظم المخرجات المفاجئة.

  • لا جذر واحد. يحتاج XML إلى عنصر جذر واحد بالضبط. كائنات JSON بمفاتيح متعددة على المستوى الأعلى تنتج جذورًا متعددة، وهو XML غير صالح. لُف مدخلك بمفتاح واحد: `{"root": {"a":1, "b":2}}`.
  • مصفوفة على المستوى الأعلى. مصفوفة JSON `[{"a":1},{"a":2}]` لا تملك اسم عنصر جذر. لُفّها: `{"items": [{"a":1},{"a":2}]}`. ثم يصبح كل عنصر من المصفوفة عنصر `<items>`.
  • أسماء عناصر تحتوي مسافات أو رموزًا. لا يمكن أن تحتوي أسماء عناصر XML على مسافات، أو تبدأ برقم، أو تحتوي على `:` أو `/` أو `<` إلخ. نظِّف مفاتيح JSON قبل التحويل — استبدل المسافات بـ `_`، وضع حرفًا قبل الأرقام.
  • السمات مقابل العناصر. يصبح المفتاح JSON `id` عنصرًا فرعيًا `<id>1</id>`. لجعله سمة (`<user id="1">`)، أضف البادئة `@_`: `{"user":{"@_id":1}}`. تُزال البادئة عند الإخراج.
  • القيم null. تتحول `null` إلى عنصر فارغ (`<x/>`). إن أردت حذفها كليًا، أزل القيم null من JSON قبل التحويل.
  • محارف خاصة في النص. يهرّب XML تلقائيًا `<` و `>` و `&` و `"` و `\'`. تصبح سلسلة JSON `"<b>hi</b>"` نصًا `&lt;b&gt;hi&lt;/b&gt;` لا عناصر متداخلة. استخدم بنية JSON وسيطة إن أردت تداخلًا حقيقيًا.
الأسئلة الشائعة

كيف أحصل على إعلان XML `<?xml version="1.0"?>`؟

أَضِفه أنت في بداية المخرج — لا يُنتج المحوِّل إعلانًا. لـ XML بترميز UTF-8 يكون الإعلان اختياريًا تقنيًا لكنه يُضاف عادةً: `<?xml version="1.0" encoding="UTF-8"?>` متبوعًا بـ XML المحوَّل.

هل تُحفَظ مصفوفات JSON كعناصر متكررة؟

نعم. `{"tags":["a","b"]}` يصبح `<tags>a</tags><tags>b</tags>` — شقيقان بنفس الوسم، وهو التمثيل XML المعياري للقيمة المتكررة.

هل يمكنني الحصول على مصفوفات متداخلة بأسلوب JSON في XML؟

ليس مباشرة. لا يحوي XML مفهوم مصفوفة أصلي؛ بل أشقاء متكررون فقط. المصفوفات المتداخلة في JSON تصبح بنية XML مسطحة أكثر يحدد فيها السياق التجميع. الذهاب XML → JSON → XML عبر هذه الأداة يحفظ المجموعة الفرعية القابلة للذهاب والعودة.

كيف تُعالَج التواريخ؟

لا يحوي JSON نوع Date — التواريخ عادةً سلاسل ISO 8601 جاهزة. تصبح هذه محتوى نصيًا للعنصر دون تغيير. إن كان XML اللاحق يتوقع صيغة تاريخ محددة، فاضبط JSON على تلك الصيغة.

هل يُرفَع JSON الخاص بي؟

لا. كل شيء يعمل في متصفحك — يُحلَّل مدخلك ويُحوَّل بـ JavaScript على هذه الصفحة ولا يُرسَل إلى أي خادم.

هل يحفظ الذهاب JSON → XML → JSON بياناتي؟

بالنسبة للبيانات المهيكلة المعتادة مع اصطلاح السمة @_، نعم — دلاليًا. قد تتطبَّع بعض الحالات الحدية (نص مختلط مع عناصر فرعية، ترتيب السمات مقابل ترتيب العناصر). إن كانت المطابقة بالبايت مهمة فلا تذهب وتعود عبر XML.