شيفرة هذه الصفحة لم تبدأ العمل.

فتح index.html مباشرة من مجلد يمنع المتصفح من تحميل وحدات JavaScript، فلا يحدث شيء عند اختيار ملف. قدّم المجلد عبر HTTP بدلا من ذلك:

powershell -ExecutionPolicy Bypass -File serve.ps1

ثم افتح http://localhost:8080/.

مُنسّق XML — انشره أو اضغطه أو حوّله إلى JSON

‏XML منشور ليُقرأ أو مضغوط ليُرسَل، ومحوَّل إلى JSON في الاتجاهين. ولا شيء من ذلك يُلصَق في خادوم أحد آخر.

اللغة: العربية
عرض الشيفرة المصدرية
ملفات XML وJSON الخاصة بك لا تُرفع أبدا. لا يوجد خادم.

التنسيق والتحويل حسابٌ على سلسلة نصية، يجري هنا، في هذه الصفحة. المحلّل مكتوب باليد ويقع في src/shared/parse-xml.js، وليس هناك سواه. ولهذه الأداة لا وظيفة شبكية من أي نوع — لا شيء يُجلَب ولا شيء يُرسَل — وذلك يزن هنا أكثر مما توحي به كلمة «XML»: فالذي يصل بهذه الصيغة هو في الغالب فاتورة، أو كشف حساب مصرفي، أو سجلّ صحي، أو طلب SOAP تحمل ترويسته بيانات اعتماد أحدهم.

فحص حي: جارٍ الفحص…

دون اتصال: جارٍ الفحص…

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

1 اختر العمل

التخطيط الضغط يعطي المستند نفسه دون أي مسافة كانت موجودة للقراءة فحسب.

اسمٌ للعنصر الخارجي XML لها عنصر واحد في الأعلى وJSON ليس لها، فلا بدّ من اختراع واحد.

2 الصقه

فارغ

3 خذ الناتج

لا شيء بعد.

 

عرض بصيغة Markdown

كيف تنسّق XML دون رفعه

  1. اختر المهمة. لسانان وصندوق واحد: تنسيق ينشر XML أو يضغطه، وتحويل يجعله JSON، أو يعيد JSON إلى XML. وملف XML الذي نشرته للتوّ هو نفسه الذي تحوّله، دون لصقه مرّتين.
  2. الصقه، أو أفلِت الملف. كلّ ما يمكنك تحديده ونسخه يصلح، وملف .xml أو .svg أو .rss أو .xsd تُفلته على المُنتقي يقرؤه متصفّحك أنت ويضعه في الصندوق — ولا توجد خطوة رفع حتى تُترَك.
  3. اختر الإزاحة، أو اضغطه. مسافتان أو أربع أو مسافة جدولة. والضغط يعطي المستند نفسه دون أي مسافة كانت موجودة للقراءة فحسب، وتقول النتيجة كم بايتاً وفّر ذلك.
  4. اقرأ الخطأ حيث هو. المحلّل الذي يفشل هنا يقول أيّ وسم لم يُغلَق قط، وفي أي سطر وأي عمود، بدل «خطأ في السطر 1»، وهو ما يقوله المتصفّح عن مستند قرأه دفعةً واحدة.
  5. خذ النتيجة. انسخها، أو نزّلها ملفاً باسم الصيغة التي خرجت بها.

أسئلة

هل يُرفع ملف XML الخاص بي إلى أي مكان؟

لا. المحلّل والطابع في هذه الصفحة دالّتان تعملان في متصفّحك أنت، على عتادك أنت. ولهذه الأداة لا وظيفة شبكية من أي نوع — فهي لا تجلب شيئاً أبداً ولا ترسل شيئاً أبداً — وتسمّي Content-Security-Policy الخاصة بالصفحة كلّ عنوان يجوز لها الاتصال به، وليس منها واحد لنا. وهذا يزن في XML أكثر مما توحي به سمعة الصيغة: فالذي يصل فيها هو في الغالب فاتورة، أو كشف حساب مصرفي، أو سجلّ صحي، أو طلب SOAP تحمل ترويسته بيانات اعتماد.

هل يحلّل الكيانات الخارجية؟

لا، ولا شيء لتعطيله. تحليل الكيانات الخارجية هو الطريقة التي يُستدرَج بها محلّل XML إلى قراءة ملفات من الجهاز الذي يشغّله — الهجوم الذي يُكتَب عادةً XXE — وsrc/shared/parse-xml.js قارئ مكتوب باليد بلا أي تحليل للكيانات. ولا يُسلَّم نصّك كذلك إلى DOMParser الخاص بالمتصفّح أبداً. ويُمرَّر DOCTYPE دون أن يُنفَّذ قط.

ماذا يُفقَد عند تحويل XML إلى JSON؟

ترتيب المحتوى المختلط، والتعليقات، والفرق بين السمة والعنصر الابن — وهذا الأخير يُخفَّف لا يُمحى، لأن السمة تصير عضواً يبدأ اسمه بـ @. ونصّ العنصر نفسه يصير #text متى اضطرّ إلى مشاركة موضعه، والأبناء المتكرّرون يصيرون مصفوفة. وتبقى كلّ قيمة نصاً: فلا أنواع في XML، والبتّ بأن 8080 كان عدداً اختلاقٌ لمعلومة.

ماذا يُفقَد عند تحويل JSON إلى XML؟

الفرق بين الكائن الفارغ والمصفوفة الفارغة والنصّ الفارغ، وثلاثتها تصير عنصراً فارغاً، ونوع كلّ قيمة، لأن XML بلا أنواع. وتصير المصفوفة عنصراً مكرَّراً، وهو الشكل الوحيد الذي يُقرأ رجوعاً، والمفتاح الذي لا يحتمله اسم عنصر تُستبدَل حروفه العسيرة بدل إخراج مستند لن يقرأه أي محلّل.

هل يستطيع تنسيق ملف SVG أو تغذية RSS أو ملف POM؟

نعم. ثلاثتها XML، وهذا يقرأ XML لا لهجةً بعينها منه. وملف SVG منشور هكذا أسهل في التحرير باليد؛ وتغذية RSS أو Atom تُرسَل عادةً مضغوطة ولا تُقرأ حتى يفتحها شيء. ولا يغيّر الترتيب شيئاً مما يعنيه المستند.

هل تغيير الإزاحة يغيّر معنى XML؟

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

لماذا لا يُستخدَم محلّل XML الخاص بالمتصفّح؟

بسبب ما يقوله حين يكون المستند معطوباً. فـDOMParser يعيد مستند خطأ تختلف صياغته في كلّ متصفّح وكثيراً ما تنتهي إلى «خطأ في السطر 1». أما القارئ المكتوب باليد فيستطيع أن يقول أيّ وسم لم يُغلَق قط، وأين فُتح، وهو ما كنت تحتاج فعلاً إلى معرفته. وعدم تحليل الكيانات الخارجية هو السبب الآخر.

ما حجم الملف الذي يستطيع التعامل معه؟

لا حدّ موضوع هنا، لأنه لا خادوم يدفع ثمنه. السقف العملي هو جهازك أنت: بضعة ميغابايتات من XML تمرّ على ما يرام، ومع مستند طويل جداً تنتظر الصفحة توقّفاً في كتابتك قبل أن تعيد التنسيق، بدل أن تنازعك لوحة المفاتيح.

هل هو مجاني، وهل أحتاج إلى حساب؟

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

هل يعمل دون اتصال؟

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