FreeToGenerate.com

100% مجاني · بلا تسجيل · كل شيء يعمل داخل متصفحك

0
الخيارات
المسافة البادئة

لا يوجد معيار لهذا التحويل، ولذلك تتبع هذه الأداة العرف الأشيع: تتحول السمات إلى مفاتيح تسبقها علامة @، ويتحول نص العنصر نفسه إلى #text. وتستخدم أدوات أخرى أعرافًا مختلفة، فقد لا يُقرأ ناتج JSON من هنا كما هو في مكان آخر.

كل شيء يجري داخل متصفحك. لا يُرفع شيء.

متوفر أيضًا بلغات أخرى: English · Español · Português · Français

تحويل XML إلى JSON

الصق XML لتحصل على JSON وفق عرف @ و#text، مع تقرير صريح بكل ما اضطر التحويل إلى تركه خلفه.

ماذا يعني تحويل XML إلى JSON؟

تصف كل من XML وJSON بياناتٍ مبنية، لكنهما ليستا على الشكل نفسه، وهنا تكمن الصعوبة كلها. فعناصر XML قد تحمل سمات إلى جانب محتواها، وقد يتكرر الوسم نفسه أي عدد من المرات، وقد يقع النص بين العناصر الأبناء. أما JSON فلديه كائنات ومصفوفات ونصوص وأرقام وقيم منطقية وnull، ولا مفهوم لديه للسمة أصلًا. ولذلك فإن التحويل بينهما يعني اختيار طريقة لكتابة أفكار XML الزائدة بمفردات JSON الأقل.

ولا يوجد معيار يحكم هذا الاختيار. فلم يعرّف W3C يومًا ترميزًا لـ XML بصيغة JSON، ولذلك تتبنى كل أداة عرفًا خاصًا بها، والأعراف مختلفة فيما بينها. تستخدم هذه الأداة الأكثر شيوعًا: تتحول السمات إلى مفاتيح تسبقها علامة @، ويتحول نص العنصر نفسه إلى #text، وهو ما تفعله Json.NET من Newtonsoft وxml2js وSpark. وتختلف أعراف أخرى: فـ BadgerFish يستخدم $ للنص، وعرف Parker يسقط السمات كليًا.

ولأن هذا التحويل اختيار لا قاعدة، تذكر هذه الصفحة العرف الذي تتبعه، وتخبرك، بخصوص مستندك أنت تحديدًا، بأي الأجزاء لم تستطع العبور. وهذا أنفع من أداة تُسقط الأشياء بصمت وتقدّم الناتج على أنه كامل.

طريقة التحويل

  1. الصق XML في اللوحة اليمنى. يظهر JSON في اللوحة المقابلة أثناء الكتابة، دون أي زر تضغطه. ويملأ زر «تحميل مثال» اللوحة بفهرس صغير يعرض السمات والعناصر المتكررة وتعليقًا واحدًا.
  2. اختر مدى صرامة قراءة القيم. تبقى كل القيم نصوصًا افتراضيًا، لأن XML بلا أنواع. وعند تفعيل قراءة الأنواع يصبح 42 رقمًا وtrue قيمة منطقية، لكن يبقى نصًا كل ما قد تغيّره رحلة الذهاب والعودة، مثل 01234 و1.10.
  3. اقرأ تقرير الفاقد ثم انسخ. أسفل اللوحتين تسرد الأداة ما عجز العرف عن تمثيله وعدد مرات وروده. وإذا قالت إنه لم يُفقد شيء فالمستند يقع تمامًا داخل حدود العرف. ويضع زر «نسخ الناتج» صيغة JSON في الحافظة.

ماذا يفعل العرف بالسمات والتكرار والنص

تتحول السمة إلى مفتاح تسبقه علامة @، وهذا بالضبط ما يبقيها مميّزة عن عنصر ابن يحمل الاسم نفسه. فلولا هذه البادئة لأنتج عنصر يحمل سمة id وعنصر يحمل ابنًا اسمه id صيغة JSON متطابقة، ولصار التحويل رجوعًا أشبه برمي عملة.

ويتحول الوسم المتكرر إلى مصفوفة، بينما يبقى الوسم الذي يظهر مرة واحدة قيمة مفردة. وهذه القاعدة هي ما يتوقعه معظم الناس عند النظر إلى الناتج، وهي أيضًا مصدر التفاوت الحقيقي الوحيد بين هاتين الصيغتين: إذ لا شيء في XML يشير إلى وجود قائمة، فتبدو القائمة التي صادف أن فيها عنصرًا واحدًا مطابقة تمامًا لقيمة مفردة.

ويتحول نص العنصر نفسه إلى #text حين يحمل العنصر أيضًا سمات أو أبناء، ويصبح هو القيمة مباشرة حين لا يحمل أيًّا منهما. أما العنصر الفارغ فيتحول إلى null. وتُبقي هذه الخيارات الحالة الشائعة، أي عنصرًا طرفيًا يحمل نصًا، أقصر ما يمكن، بدل تغليف كل قيمة داخل كائن سعيًا وراء التماثل.

ما لا يستطيع العبور، بصراحة

هناك أربعة أشياء لا مكان لها في هذا العرف، وتخبرك الأداة بكل واحد منها بدل إسقاطه بصمت: التعليقات، وتعليمات المعالجة، وترويسة doctype، وأقسام CDATA التي تصل كنص عادي فتفقد كونها كانت موسومة نصًا خامًا.

أما المحتوى المختلط فهو الحالة الأدق. ففقرة فيها كلمة غليظة داخل جملة تضع نصًا قبل عناصرها الأبناء وبينها وبعدها. وللعرف خانة #text واحدة فقط، فينجو النص ولا ينجو موضعه بالنسبة إلى العناصر. وإذا كان ملف XML لديك أقرب إلى مستند منه إلى سجل بيانات، فهذا قيد حقيقي وستقوله الأداة صراحة.

وللاتجاه المعاكس ثغرته الخاصة، ويجدر معرفتها قبل الاعتماد على رحلة ذهاب وعودة. فقد قيس التحويل من JSON إلى XML ثم رجوعًا على نحو 1700 مستند مولَّد: عاد 72.8% منها مطابقًا. وكل حالات الإخفاق دون استثناء ترجع إلى سببين اثنين بالضبط: مصفوفة من عنصر واحد تُكتب وسمًا مفردًا فتُقرأ رجوعًا قيمةً مفردة، أو مصفوفة متداخلة داخل مصفوفة أخرى لا سبيل لكتابتها بوسم مكرر فتنبسط. وبعد طرح هذين السببين كان الباقي غير المفسَّر صفرًا، فالحدود هي هذه بالضبط ولا شيء غيرها.

وتُحفظ فضاءات الأسماء كما كُتبت ببادئاتها بدل حلّها. فتبقى البادئة جزءًا من اسم المفتاح، فيصير ns:title هو المفتاح ns:title. وهذا أمين للمستند، لكنه يعني أن من يستهلك JSON عليه معرفة البادئة، إذ لا يملك JSON أي آلية لفضاءات الأسماء تحمل هذا الارتباط.

لماذا هذه الأداة مجانية؟

التحويل عملية تحليل ثم إعادة كتابة، وكلتاهما تجريان داخل متصفحك أثناء الكتابة. لا يُرفع شيء، فلا كلفة خادم تُسترد، ولا سبب يدعو لطلب حساب منك قبل أن تحوّل مستندك أنت.

وهذا يعني كذلك ألا علامة مائية، ولا حدًّا للحجم موضوعًا لدفعك نحو اشتراك، ولا سقفًا لعدد المستندات التي تمرّرها.