منسّخ ومُصغّر XML
التنسيقتجميل أو ضغط XML باستخدام fast-xml-parser. يطبّع المسافات البادئة والسمات والوسوم ذاتية الإغلاق. معالجة XML خالصة — بدون تحويل الصيغة.
لا يتم جلب الروابط البعيدة؛ الصق JSON مباشرة.
في هذه الصفحة
ما هو منسِّق XML؟#
يُعيد منسِّق XML ترتيب وثيقة فقدت بنيتها — استجابة SOAP مُفرَغة على سطر واحد، أو خلاصة RSS سُحبت عبر وسيط طوى مسافاتها، أو ملفّ إعداد حُرِّر في صندوق نصّ لم يحفظ الإزاحة — ويُزيحها من جديد فتصبح هرمية العناصر ظاهرة. أمّا العكس، التصغير، فيُجرد كلّ بايت من المسافات بين الوسوم لتكون الوثيقة بأصغر حجمٍ ممكنٍ للنقل.
ما يجعل رحلة الذهاب والإياب لـ XML أصعب ممّا تبدو هو أنّ البحث والاستبدال الساذج على < و> يُدمّر المعلومات. فترتيب العناصر، وإعلان <?xml?>، والتعليقات، وتعليمات المعالجة مثل <?xml-stylesheet?>، وترتيب السمات، والفرق بين <a></a> و<a/>، كلّها تحمل معنى. تستخدم هذه الصفحة fast-xml-parser في نمط حفظ الترتيب (preserve-order)، الذي يُحلِّل الوثيقة إلى شجرة مرتَّبة ويُعيد بناءها بأمانة — فالتنسيق منظر مُطبَّع لوثيقتك أنت، لا لوثيقة مُعاد ترتيبها. ولهذا أيضًا تتميّز هذه الأداة عن محوّل JSON/XML: فهي تفعل رحلة ذهاب وإياب خالصة من XML إلى XML، دون تغيير صيغة البيانات أبدًا.
كيفية الاستخدام#
- الصق XML في لوحة الإدخال على اليسار. ويُظهر النائب وثيقة
<?xml?>مُصغَّرة إن احتجت نقطة بداية، أو انقر مثال. - اختر زرّ الوضع من شريط الأدوات:
- تنسيق — تحليل، ثمّ إعادة بناء بإزاحة وفواصل أسطر. وتنهار العناصر الفارغة إلى صيغة ذاتية الإغلاق (يصير
<a></a>هو<a/>)، وتُحفَظ السمات، ويبقى التعليق والإعلان. - ضغط — تحليل، ثمّ إعادة بناء كسطر مُحكم مفرد بلا مسافات بين الوسوم وبلا سطر جديد لاحق.
- تنسيق — تحليل، ثمّ إعادة بناء بإزاحة وفواصل أسطر. وتنهار العناصر الفارغة إلى صيغة ذاتية الإغلاق (يصير
- في وضع التنسيق، اختر المسافة البادئة: 2، أو 4، أو علامة جدولة.
- اقرأ النتيجة في لوحة الإخراج. وتُظهر الترويسة حجم المخرج بالأحرف؛ واستخدم نسخ لأخذه. ومسح تُعيد اللوحتين.
إن لم يكن مدخلك صالح البناء — وسم غير مغلق، أو علامة & شاردة ينبغي أن تكون & — يُبلِّغ شريط الحالة عن الخطأ بأفضل صف وعمود ممكنين، فتجد المشكلة بدلًا من التحديق في مخرج فارغ.
الميزات الرئيسية#
- رحلة ذهاب وإياب أمينة. حفظ الترتيب يُبقي ترتيب الوثيقة، وإعلان
<?xml?>، والتعليقات، وتعليمات المعالجة عبر دورة التنسيق/التصغير. - كلا النمطين يُشاركان محلِّلًا واحدًا. يُحلَّل التنسيق والتصغير بشكل متطابق؛ ويختلفان فقط في كيفية إصدار الباني للنصّ. فإذا نجح التصغير، نجح التنسيق أيضًا، والعكس بالعكس.
- تطبيع ذاتي الإغلاق. العناصر الفارغة مثل
<a></a>تنهار إلى<a/>، وهي الصيغة المُحكمة المعيارية وتجعل فروق المسافات بيّنة عند الموازنة. - القيم تبقى سلاسل. المحلِّل مضبوط على
parseTagValue: false، فعقدة نصّtrueتبقى السلسلة"true"و007تبقى"007". لا قَسر نوعي صامت يُفاجئك في رحلة العودة. - يُعالج المدخلات الكبيرة خارج الخيط الرئيسي. تُمرَّر الوثائق الأكبر من 1 ميغابايت عبر Web Worker، فتبقى الصفحة متجاوبة أثناء التحليل. أمّا المدخلات الأصغر فتجري داخل السطر.
- من جهة العميل صارمة. المحلِّل مُدمَج في الصفحة؛ ولا يغادر XML متصفّحك أبدًا.
مثال عملي#
وثيقة إعداد صغيرة محشورة على سطرين:
المدخل:
<?xml version="1.0"?><config><server host="example.com" port="443"/><feature name="cache"/><feature name="logs"></feature></config>
انقر تنسيق بـ 2 مسافة:
<?xml version="1.0"?>
<config>
<server host="example.com" port="443"/>
<feature name="cache"/>
<feature name="logs"/>
</config>
أمران يَبرزان. نجى إعلان <?xml version="1.0"?> في رحلة الذهاب والإياب في أعلى الوثيقة. وكلا <feature name="logs"></feature> و<feature name="cache"/> ذاتية الإغلاق أصلًا يظهران الآن كـ <feature name="logs"/> — فالعناصر الفارغة طُبِّعت إلى صيغة ذاتية الإغلاق، فالميزتان ذواتا الشكل نفسه تبدوان فعليًّا متطابقتين. انقر ضغط على المدخل الأصلي فتحصل على صيغة النقل:
<?xml version="1.0"?><config><server host="example.com" port="443"/><feature name="cache"/><feature name="logs"/></config>
كلّ بايت من المساحات الزخرفية اختفى، لكنّ ترتيب السمات على <server> دون مساس والإعلان لا يزال هناك.
الأسئلة الشائعة#
ما الفرق بين هذه الأداة ومحوّل JSON/XML؟#
هذه الأداة XML داخلاً، XML خارجًا — تُجمِّل أو تُصغِّر وثيقة XML وتُعيد لك XML. أمّا محوّل JSON/XML في هذا الموقع فيُترجم بين الصيغتين، حائلًا XML إلى شجرة كائنات JSON أو العكس. واستخدم هذه الصفحة حين تريد الصيغة نفسها، لكن بشكل أفضل؛ واستخدم المحوّل حين تريد فعلًا تغيير الصيغ.
هل يحفظ التنسيق تعليقاتي؟#
نعم. تُلتقط التعليقات في الشجرة المرتَّبة أثناء التحليل ويُعيد الباني إصدارها، فينجو <!-- note --> في كلٍّ من التنسيق والتصغير. وتُحفَظ تعليمة المعالجة <?xml-stylesheet?> أيضًا.
لماذا يكون موقع الخطأ تقريبيًّا أحيانًا؟#
المحلِّل الأساسي لا يكشف المواضع المحرفية لكلّ نمط فشل، فبالنسبة لبعض الأخطاء لا تستطيع هذه الصفحة سوى الإبلاغ عن صف وعمود بأفضل جهد مُحلَّلين من رسالة المحلِّل. وللوسم المغلق المفقود يكون الموقع دقيقًا عادةً؛ أما لأفشال التحليل الأكثر غرابة فقد يَفترض الصف 1. ورسالة الخطأ نفسها تُعرض كاملةً دائمًا، وهي تكفي عادةً للعثور على المُخطِئ.
هل يستطيع التعامل مع ملفّات XML كبيرة جدًا؟#
نعم، حتى حدّ ذاكرة متصفّحك. تُحلَّل المدخلات فوق 1 ميغابايت داخل Web Worker كي لا تتجمّد الواجهة. وللوثائق بمئات الميغابايت، توقّع أن يستغرق التحليل وقتًا ملحوظًا وذاكرة — هذه أداة متصفّح، لا خادم تدفّق.