يعمل على جهازك · الملف لا يغادر جهازك.
الصق أو أضف JSON واحصل على مستند XML بإعلان في أعلاه وعنصر لكل مفتاح. إن كان في أعلى المستند مفتاح واحد صار هو العنصر الجذر، وإلا وُضع كل شيء داخل <root>. القائمة تصبح عناصر مكررة باسم مفتاحها، والقائمة في أعلى الملف تصبح عناصر <item> داخل <root>.
المفاتيح التي تبدأ بـ @ تصبح سمات، والمفتاح "#text" يصبح نص العنصر — وهي البنية التي تكتبها أداة XML إلى JSON، فالمستند المحوَّل هناك يعود هنا XML نفسه. وكل قيمة أخرى نص داخل عنصرها، وnull عنصر فارغ، والمستند مُزاح بمسافتين لكل مستوى. المفاتيح التي لا يقبلها XML اسمًا — تبدأ برقم أو فيها مسافات ورموز — تُصحَّح بشرطات سفلية فتُقرأ النتيجة دائمًا.
تُكتب الرموز الخاصة بالشكل الصحيح في XML (& و< و>، وفي السمات علامات التنصيص وفواصل الأسطر)، ومحارف التحكم التي لا يستطيع XML 1.0 حملها أصلًا تُحذف. والترميز UTF-8، وترى أول 200 سطر قبل التنزيل.
ليست مناسبة لِـ: مطابقة مخطط 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 إطلاقًا، ولا حتى برقمها مثل ، فتُحذف. وتُكتب العودة إلى أول السطر ليحتفظ بها المحلل. وفي قيم السمات تُكتب علامات التنصيص ومسافات الجدولة وفواصل الأسطر مراجعَ رقمية أيضًا، لأن المحلل سيحوّلها إلى مسافات لولا ذلك.
لا تعبّر العناصر المكررة إلا عن مستوى واحد من القوائم. فيصبح "m": [[1, 2], [3]] ثلاثة عناصر <m> فيها 1 و2 و3، ويضيع أن 1 و2 كانا معًا. والقائمة في أعلى المستند تتصرف بالطريقة نفسها: [1, [3, 4]] يعطي ثلاثة عناصر <item>. فإن كان التجميع مهمًا فضع كل قائمة داخلية في كائن أولًا: [{"values": [1, 2]}, {"values": [3]}] يعطي عنصرَي <item>، في كلٍّ منهما <values> خاص به.
المستند الذي مرّ عبر /xml-to-json يعود بالعناصر والسمات وبادئات مساحات الأسماء والنص نفسها، دون غلاف إضافي حوله. أما ما لم يحمله JSON أصلًا فلا يعود: التعليقات وDOCTYPE، وموضع النص بين العناصر الفرعية، والترتيب بين العناصر المختلفة الأسماء، إذ تعود مجمّعة بحسب الاسم. وإن كان التعرّف على الأنواع مفعّلًا في /xml-to-json فإن قيمة مثل TRUE تعود true؛ عطّل التعرّف هناك لتعود القيم حرفًا بحرف.
هذه الصفحة بلغات أخرى: English · Deutsch · Français · Español · Русский · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা