تحويل JSON إلى XML

يعمل على جهازك · الملف لا يغادر جهازك.

الصق أو أضف JSON واحصل على مستند XML بإعلان في أعلاه وعنصر لكل مفتاح. إن كان في أعلى المستند مفتاح واحد صار هو العنصر الجذر، وإلا وُضع كل شيء داخل <root>. القائمة تصبح عناصر مكررة باسم مفتاحها، والقائمة في أعلى الملف تصبح عناصر <item> داخل <root>.

المفاتيح التي تبدأ بـ @ تصبح سمات، والمفتاح "#text" يصبح نص العنصر — وهي البنية التي تكتبها أداة XML إلى JSON، فالمستند المحوَّل هناك يعود هنا XML نفسه. وكل قيمة أخرى نص داخل عنصرها، وnull عنصر فارغ، والمستند مُزاح بمسافتين لكل مستوى. المفاتيح التي لا يقبلها XML اسمًا — تبدأ برقم أو فيها مسافات ورموز — تُصحَّح بشرطات سفلية فتُقرأ النتيجة دائمًا.

تُكتب الرموز الخاصة بالشكل الصحيح في XML (& و< و>، وفي السمات علامات التنصيص وفواصل الأسطر)، ومحارف التحكم التي لا يستطيع XML 1.0 حملها أصلًا تُحذف. والترميز UTF-8، وترى أول 200 سطر قبل التنزيل.

كيفية تحويل JSON إلى XML

  1. أضف ملف JSON أو الصق النص.
  2. اضغط «حوّل إلى XML».
  3. راجع المعاينة ونزّل ملف .xml.

الصيغ المدعومة والحدود

المدخل
JSON — ملف أو نص ملصوق
المخرج
XML 1.0، UTF-8، منسّق
الجذر
المفتاح الوحيد في الأعلى، وإلا <root>؛ القائمة العليا عناصر <item>
مكان المعالجة
داخل متصفحك — الملف لا يغادر جهازك

ليست مناسبة لِـ: مطابقة مخطط XML محدد (SOAP أو RSS أو معيار فواتير) — أسماء العناصر تتبع مفاتيح JSON لا مخططًا.

كيف تصبح مفاتيحك أسماء عناصر

المفتاح الذي يبدأ بـ @ يصبح سمة، والمفتاح "#text" يصبح نص العنصر، فيعطي {"item": {"@id": 3, "#text": "A"}} العنصر <item id="3">A</item>. وإن كان في أعلى المستند مفتاح واحد فهو العنصر الجذر؛ وإلا وُضع كل شيء داخل <root>.

والحرف الذي لا يقبله XML في الاسم يصبح شرطة سفلية، والاسم الذي يبدأ بحرف لا يجوز أن يأتي أولًا، كالرقم، تُضاف أمامه شرطة سفلية: "1st place" يصبح <_1st_place>. ولا تبقى النقطتان (:) إلا إذا كانت البادئة التي قبلها معرَّفة في مستوى أعلى، كما في "@xmlns:soap"؛ أما "soap:Body" من غير تعريف فتصبح <soap_Body>، لأن المحلل الذي يراعي مساحات الأسماء (namespaces) لا يقبلها على غير ذلك. والحروف من أي كتابة مسموحة، فيبقى مفتاح مثل "اسم" أو "名前" كما كُتب.

كيف تبدو القيم

تُكتب كل قيمة نصًا، والأرقام كما وردت في JSON تمامًا: يبقى 1.0 هو 1.0، ويحتفظ 12345678901234567890 بكل أرقامه. وnull والكائن الفارغ كلاهما يصبح عنصرًا فارغًا مثل <note/>، والقائمة الفارغة لا تكتب شيئًا أصلًا، فلا يستطيع XML التفريق بين هذه الثلاثة.

ومحارف التحكم، أي الرموز التي تقل عن 32 عدا مسافة الجدولة (Tab) والسطر الجديد والعودة إلى أول السطر، لا يمكن كتابتها في XML 1.0 إطلاقًا، ولا حتى برقمها مثل &#1;، فتُحذف. وتُكتب العودة إلى أول السطر &#13; ليحتفظ بها المحلل. وفي قيم السمات تُكتب علامات التنصيص ومسافات الجدولة وفواصل الأسطر مراجعَ رقمية أيضًا، لأن المحلل سيحوّلها إلى مسافات لولا ذلك.

القوائم داخل القوائم تفقد تجميعها

لا تعبّر العناصر المكررة إلا عن مستوى واحد من القوائم. فيصبح "m": [[1, 2], [3]] ثلاثة عناصر <m> فيها 1 و2 و3، ويضيع أن 1 و2 كانا معًا. والقائمة في أعلى المستند تتصرف بالطريقة نفسها: [1, [3, 4]] يعطي ثلاثة عناصر <item>. فإن كان التجميع مهمًا فضع كل قائمة داخلية في كائن أولًا: [{"values": [1, 2]}, {"values": [3]}] يعطي عنصرَي <item>، في كلٍّ منهما <values> خاص به.

من XML إلى JSON ثم العودة

المستند الذي مرّ عبر /xml-to-json يعود بالعناصر والسمات وبادئات مساحات الأسماء والنص نفسها، دون غلاف إضافي حوله. أما ما لم يحمله JSON أصلًا فلا يعود: التعليقات وDOCTYPE، وموضع النص بين العناصر الفرعية، والترتيب بين العناصر المختلفة الأسماء، إذ تعود مجمّعة بحسب الاسم. وإن كان التعرّف على الأنواع مفعّلًا في /xml-to-json فإن قيمة مثل TRUE تعود true؛ عطّل التعرّف هناك لتعود القيم حرفًا بحرف.

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

هل يغادر ملفي جهازي؟
لا. تجري المعالجة بالكامل داخل متصفحك وبقدرة جهازك نفسه. الملف لا يغادر حاسوبك أو هاتفك، وبعد أن تستخدم الأداة مرة واحدة، تواصل العمل حتى إن انقطع الإنترنت.
كيف تُمثَّل القوائم؟
عناصر مكررة: {"items": [1, 2]} يصبح <items>1</items><items>2</items>. والقائمة في أعلى المستند تصبح عناصر <item> داخل <root>.
هل يمكن الحصول على سمات بدل العناصر؟
نعم: ضع @ أمام المفتاح. {"item": {"@id": 3, "name": "A"}} يعطي <item id="3"><name>A</name></item>. وهي البنية التي تكتبها أداة XML إلى JSON، فيعيد التحويل ذهابًا وإيابًا المستند نفسه.

أدوات ذات صلة

المزيد في الجداول والبيانات

هذه الصفحة بلغات أخرى: English · Deutsch · Français · Español · Русский · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা