Command Palette

Search for a command to run...

منسق XML: قم بتجميل XML وتصغيره والتحقق من صحته بالطريقة الصحيحة

منسق XML: قم بتجميل XML وتصغيره والتحقق من صحته بالطريقة الصحيحة

T
Toolz Team
|Aug 23, 2026|16 دقيقة قراءة

جزء من مجموعة أدوات البيانات

في المرة الأولى التي كاد فيها XML أن يدمر فترة ما بعد الظهيرة، كانت استجابة SOAP من بوابة الدفع. سطر واحد. أحد عشر ألف حرف. لا توجد أسطر جديدة، ولا مسافة بادئة، مجرد جدار متواصل من الأقواس الزاوية التي لفها طرفي في لبنة غير قابلة للقراءة. في مكان ما كان هناك عنصر واحد خاطئ تسبب في عدم تطابق التوقيع، وكان من المفترض أن أجده بالعين المجردة. لقد قمت ببناء الكثير من الأشياء منذ ذلك الحين - مكونات WordPress الإضافية، وواجهات برمجة تطبيقات Laravel، وأدوات React خلف [Toolz.dev] (/ - ويمكنني أن أخبرك أن منسق XML الجيد هو أحد تلك الأدوات المساعدة الهادئة التي لا تقدرها حتى اللحظة التي تحدق فيها في جدار من العلامات مع موعد نهائي خلفك.

هذا الدليل هو الذي أتمنى لو حصلت عليه بعد ظهر ذلك اليوم. وهو يغطي ما يفعله منسق XML بالفعل، ولماذا يكون التجميل والتصغير وجهين لعملة واحدة، وقاعدة المسافات البيضاء التي تجعل التنسيق آمنًا، وحفنة من أخطاء التحقق التي تمثل كل &quot تقريبًا؛ لماذا فاز &#39؛ في هذا التحليل والاقتباس؛ لحظة. يمكنك المتابعة في المتصفح مجانًا تنسيق XML - يعمل بالكامل على جهازك، لذلك حتى حمولة الدفع لا تترك الكمبيوتر المحمول الخاص بك أبدًا.

ليرة تركية؛DR: يقوم منسق XML بإعادة كتابة مستند &#39؛s مسافة بيضاء غير مهمة - المساحة بين العلامات - دون لمس معناها. يضيف Beautify فواصل الأسطر والمسافات البادئة حتى تتمكن من قراءة التسلسل الهرمي؛ تصغير كل ذلك بحيث يكون الملف صغيرًا قدر الإمكان. يحافظ المنسق الجيد على التعليقات وCDATA وإعلان XML وترتيب السمات ويتحقق من صحة التنسيق (مطابقة العلامات والعناصر المغلقة والأقسام المنتهية) على طول الطريق. يفعل لا تحقق من المستند الخاص بك مقابل مخطط DTD أو XSD - فهذه مهمة مختلفة.

ماذا يفعل منسق XML بالفعل؟

المسافة البيضاء هي المكان الذي يصبح فيه التنسيق مثيرًا للاهتمام، لأنه XML 1.0 يتطلب من المحلل اللغوي تمرير كل حرف داخل عنصر ما إلى التطبيق - ولهذا السبب يجب على المنسق معرفة ما هو آمن للمسه. في جوهره، يقوم منسق XML بتوزيع المستند الخاص بك إلى شجرة من العقد - العناصر والنصوص والتعليقات وأقسام CDATA وتعليمات المعالجة - ثم يقوم بتسلسل تلك الشجرة مرة أخرى بمسافة متسقة. تلك الرحلة ذهابًا وإيابًا هي الحيلة الكاملة. نظرًا لأن الأداة تفهم البنية بدلاً من إجراء البحث والاستبدال الأعمى، فيمكنها وضع مسافة بادئة متداخلة بعمق <order><items><item> قم بالسلسلة بشكل صحيح، ضع كل أخ على خطه الخاص، واعلم أن النص بداخله <price>44.95</price> يجب أن تظل على نفس سطر علاماتها بدلاً من أن تمتد عبر ثلاثة.

السبب وراء أهمية ذلك يعود إلى قاعدة مدفونة في مواصفات XML: معظم المسافات البيضاء بين العناصر موجودة غير مهم. عندما يقرأ المحلل اللغوي <a>\n <b/>\n</a>، الخطوط الجديدة والمسافات حولها <b/> هل هناك للبشر ولا تحمل أي بيانات. يُسمح للمنسق بإضافة أو إزالة أو تغيير تلك المسافة البيضاء بحرية. ما يجب ألا يلمسه أبدًا هو مهم مسافة بيضاء - الأحرف الموجودة داخل عقدة النص مثل <note>Call me at 9am</note>، أو أي شيء داخل كتلة CDATA - لأن هذا المحتوى عبارة عن بيانات حقيقية. كل قرار تنسيق تنسيق XML يجعل التدفقات من احترام هذا الخط.

لذا فإن التجميل ليس زغبًا تجميليًا. عندما تعيد وضع مسافة بادئة لبنة الصابون المكونة من أحد عشر ألف حرف، يصبح التسلسل الهرمي للعناصر مرئيًا، وفجأة يصبح في غير محله <Amount> العقدة الثلاثة مستويات عميقة جدًا أمر واضح. التنسيق هو أداة لتصحيح الأخطاء بقدر ما هو أداة سهلة القراءة.

لماذا أقوم بتصغير XML بدلاً من تجميله؟

Beautify و minify هما نفس المحرك الموجه في اتجاهين متعاكسين. يضيف Beautify مسافة بيضاء للبشر؛ يقوم minify بإزالته للآلات. يمكنك الوصول إلى التصغير عندما يكون الحجم أو النقل مهمًا: تقليص ملف التكوين الذي يتم شحنه داخل حزمة تطبيقات الهاتف المحمول، أو قص نص الطلب قبل أن يمر عبر اتصال بطيء، أو تطبيع المستند بحيث يمكن مقارنة نسختين بايت مقابل بايت دون أن يعيق ضجيج المسافة البادئة الطريق.

الحفظ حقيقي ولكنه نادرًا ما يكون دراماتيكيًا. XML&#39؛ يعيش إسهابها في أسماء العلامات المتكررة، وليس في المسافة البيضاء، لذا فإن التصغير عادةً ما يتراوح بين خمسة وعشرين بالمائة اعتمادًا على مدى كثافة المسافة البادئة للأصل. وهذا يستحق الحصول عليه، ولكن إذا كنت بحاجة إلى ضغط جدي، فإن gzip الموجود على السلك يفعل أكثر بكثير - التصغير ثم gzipping هو أسلوب الحزام والأقواس الذي تستخدمه العديد من واجهات برمجة التطبيقات.

إليك النموذج العقلي الذي أستخدمه عند تحديد الطريقة التي سيتم بها توجيه الأداة

حالة تجميل تصغير
قراءة أو تصحيح الاستجابة بالعين نعم لا
إلزام ملف التكوين بالتحكم في الإصدار نعم (فروق نظيفة) لا
شحن XML داخل حزمة التطبيقات أو عبر الشبكة لا نعم
تخزين العديد من المستندات الصغيرة في عمود قاعدة البيانات لا نعم
إعداد مستند لفرق بايت مقابل بايت إما باستمرار إما باستمرار
تسليم XML إلى مطور آخر نعم لا

الانضباط الرئيسي هو الاتساق. إذا كنت تقوم بتمييز وثيقتين، فقم بتشغيلهما كلاهما من خلال نفس الوضع مع نفس الخيارات أولاً - وإلا فإنك تقارن أنماط المسافة البادئة، وليس المحتوى.

كيف يتجنب التنسيق تغيير بياناتي؟

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

الأول هو محتوى النص. يتم نسخ الأحرف الموجودة داخل العنصر حرفيًا. يتضمن الكيانات - حرفية &amp; يبقى &amp;، لا يتم فك تشفيرها بشكل مفيد أبدًا & (مما قد ينتج عنه XML غير صالح) أو مشفر مزدوج لـ &amp;amp;. ال تنسيق XML يتعامل مع النص الخاص بك على أنه معتم، وهو بالضبط ما تريده.

والثاني هو أقسام CDATA. أ <![CDATA[ ... ]]> يوجد الحظر بدقة حتى تتمكن من إسقاط محتوى خام لم يتم الهروب منه - مقتطف من JavaScript، وجزء من HTML، وسلسلة مليئة بـ < و & - في مستند XML دون الهروب منه. يقوم المنسق بإصدار هذا المحتوى تمامًا كما وجده، ولا مفر منه، ولا إعادة المسافة البادئة داخل الكتلة.

والثالث هو التعليقات والإعلان. تعليقات (<!-- ... -->)، ال <?xml version="1.0"?> يتم الاحتفاظ بالإعلان وأي تعليمات معالجة ووضعها بشكل معقول. يمكنك اختيار تجريد التعليقات عندما تريد ملفًا أصغر حجمًا، ولكن هذا هو قرارك، وليس شيئًا تفعله الأداة خلف ظهرك.

والرابع هو ترتيب السمات والاقتباس. افتراضيًا، يحتفظ المنسق بسماتك بالترتيب الذي كتبتها به، مع نمط الاقتباس الذي استخدمته، لأن مواصفات XML تتعامل مع ترتيب السمات على أنه غير مهم ولا يوجد سبب لتغييره. عندما يفعل تريد ترتيبًا أساسيًا - للاختلافات النظيفة، أو لمقارنة عنصرين يحملان نفس السمات بترتيب مختلف - a &quot؛ فرز السمات والاقتباس؛ الخيار يضعهم بالترتيب الأبجدي بالنسبة لك.

نظرًا لأن كل هذا يعمل من جانب العميل في JavaScript، فهناك مكاسب تتعلق بالخصوصية أيضًا: يتم تنسيق مستند مليء بسلاسل الاتصال أو المعرفات الداخلية أو سجلات العملاء على جهازك الخاص ولا يتم تحميله مطلقًا. إذا كنت تهتم بإبعاد بيانات العمل عن خوادم الأشخاص الآخرين و#39؛ - وينبغي عليك - أن هذا النموذج يستحق الفهم، وقد كتبت المزيد عنه في دليل خصوصية البيانات للأدوات عبر الإنترنت.

ما هي أخطاء XML التي يلتقطها المنسق؟

قبل أن يتمكن المنسق من طباعة أي شيء بشكل جميل، عليه تحليل المستند، والتحليل هو المكان الذي يحدث فيه التحقق المفيد. هذا هو حسن التكوين التحقق - القواعد الهيكلية التي يجب أن تلتزم بها كل وثيقة XML - ومن خلال تجربتي، هناك ثلاثة أخطاء تمثل الغالبية العظمى من حالات الفشل.

الأكثر شيوعا حتى الآن هو أ علامة العطف العارية. احتياطيات XML & لبدء كيان، لذلك الخام & في النص - النوع الذي يتسلل عبر عنوان URL مثل ?a=1&b=2 أو اسم شركة مثل &quot؛Marks &amp؛ سبنسر واقتباس؛ - يجعل المحلل يتوقع اسم كيان ثم يختنق عندما لا يجد واحدًا. الإصلاح هو الكتابة &amp;، ورسالة خطأ جيدة ستوجهك إلى الخط حتى لا تصطاد أعمى.

والثاني هو أ علامة غير متطابقة أو غير مغلقة. افتح أ <div> وأغلقه مع </section>أو افتح أ <span> ولا تغلقه أبدًا على الإطلاق، ولم يعد المستند في حالة جيدة. يتتبع المنسق مكدس العناصر المفتوحة أثناء تحليله، حتى يتمكن من إخبارك بالضبط بالعلامة التي يتوقع رؤيتها مغلقة وأي علامة وجدها بالفعل. تلك الرسالة الفردية - &quot؛ متوقع </book> ولكن وجدت </author> في السطر 14&اقتباس؛ - عادة ما يكون كافيا لحل المشكلة في ثوان.

والثالث هو قسم غير منتهي: تم فتح تعليق مع <!-- هذا لا يصل أبدا -->، أو كتلة CDATA التي لا تصل أبدًا ]]>. من السهل إنشاؤها عندما تقوم بالتحرير اليدوي والحذف كثيرًا. مرة أخرى، يقوم المنسق بالإبلاغ عن السطر الذي بدأ فيه القسم الجامح.

ماذا يفعل المنسق لا هل يتم التحقق من المستند الخاص بك مقابل المخطط. يسأل &quot حسن الصياغة؛ هل هذا XML صالح من الناحية الهيكلية؟&quot؛ يسأل الصدق &quot؛ هل يتبع XML هذا قواعد خاصتي نوع المستند - العناصر الصحيحة، بالترتيب الصحيح، مع أنواع البيانات الصحيحة - كما هو محدد بواسطة DTD أو XSD؟&quot؛ تلك طبقات منفصلة. يمكن أن يكون المستند جيد التكوين تمامًا ويظل هراء للغرض المقصود منه. يحتاج التحقق من صحة المخطط إلى المخطط، وهذه أداة مختلفة. يضمن المنسق الطبقة الأولى، وهي الطبقة التي تمنع تعطل المحلل اللغوي.

كيف أقوم بتنسيق XML في المحرر الخاص بي أو إنشاء خط أنابيب؟

تعد أداة المتصفح أسرع مسار لمستند لمرة واحدة، ولكن من المفيد معرفة البدائل حتى تتمكن من اختيار البديل المناسب للمهمة.

يقوم معظم المحررين بتنسيق XML محليًا. في VS Code، يتعامل &quot المدمج؛ تنسيق المستند والاقتباس؛ يتعامل الأمر (Shift+Alt+F) مع XML، وتضيف الامتدادات مثل Red Hat&#39؛ خادم لغة XML تنسيقًا مدركًا للمخطط في الأعلى. تتم إعادة تنسيق IntelliJ وإخوته باستخدام Ctrl+Alt+L. تعتبر هذه مثالية عندما يكون الملف مفتوحًا أمامك بالفعل.

على سطر الأوامر، xmllint --format file.xml (جزء من libxml2، الذي يأتي على معظم أنظمة Unix) يجمل، و xmllint --noblanks file.xml يجعلك قريبًا من الإخراج المصغر. في مشروع العقدة، مثل المكتبات xml-formatter أو prettier مع فتحة البرنامج المساعد XML في خطوة البناء. يصل مطورو بايثون إلى xml.dom.minidom.parseString(s).toprettyxml()على الرغم من تحذيرها، إلا أنها تشتهر بإضافة أسطر فارغة إضافية حول المسافات البيضاء الموجودة.

فلماذا استخدام تنسيق XML على الاطلاق؟ ثلاثة أسباب أستمر في العودة إليها. لا يحتاج إلى تثبيت ولا تكوين ولا مشروع - أنت تلصقه وتذهب. فهو يحتفظ بالبيانات الموجودة على جهازك، وهو أمر مهم عندما يكون XML حمولة حقيقية وليس مثالاً للعبة. ويتوافق بشكل طبيعي مع الأدوات المجاورة: بمجرد أن يصبح XML الخاص بك نظيفًا وصالحًا، قم بتحويله إلى JSON باستخدام محول XML إلى JSON هي نقرة واحدة، والرحلة العكسية من خلالها json إلى xml يستخدم نفس الاتفاقيات. إذا كان يومك في الغالب JSON، فإن تنسيق JSON هو ما يعادل هذا التنسيق، ويتم فهرسة جميع أفراد الأسرة في مجموعة أدوات مطور الويب.

متى يجب علي التنسيق مقابل تحويل XML الخاص بي؟

سؤال أتلقاه من الأشخاص الأحدث في هذا: إذا كانت قراءة JSON أسهل، فلماذا تنسيق XML بدلاً من مجرد تحويله؟ الجواب هو أن التنسيق والتحويل يحل مشاكل مختلفة.

التنسيق عندما تحتاج إلى ذلك يحفظ xml - لأن نقطة نهاية SOAP تتطلب ذلك، لأن موجز RSS أو Atom هو XML بحكم التعريف، أو لأن ملف التكوين الخاص بك، أو تخطيط Android الخاص بك، أو Maven الخاص بك pom.xml ببساطة هو XML وسيظل كذلك دائمًا. التنسيق يجعل XML قابلاً للقراءة أو مضغوطًا مع تركه كـ XML. لا شيء يجب أن يتغير في اتجاه مجرى النهر.

تحويل عندما تريد العمل مع البيانات بتنسيق مختلف - سحب القيم إلى الواجهة الأمامية لـ JavaScript، أو تحميل موجز في نظام يتحدث JSON، أو تطبيع عدة مصادر في شكل واحد. يغير التحويل التنسيق، ومعه بعض الدقة: سمات XML، والمحتوى المختلط، وترتيب العناصر لا تحتوي على مكافئات JSON نظيفة، لذلك يقوم المحول باختيارات متعمدة (تصبح السمات مفاتيح مسبوقة، وتصبح العلامات المتكررة صفائف) يجب عليك فهمها قبل الاعتماد عليها.

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

الأسئلة المتداولة

كيف أقوم بتنسيق XML عبر الإنترنت؟

الصق XML الخاص بك في لوحة الإدخال ، واختر Beautify ، واختر عرضًا للمسافة البادئة ، وانقر فوق تنسيق. تقوم الأداة بتوزيع المستند وإعادة بادئاته وتتيح لك نسخ النتيجة أو تنزيلها. كل المعالجة تحدث في متصفحك - لا يتم تحميل أي شيء.

ما الفرق بين تجميل وتصغير XML؟

يضيف التجميل فواصل الأسطر والمسافات البادئة بحيث يكون التسلسل الهرمي للعناصر سهل القراءة، وهو مثالي للتحرير وتصحيح الأخطاء. يؤدي التصغير إلى إزالة جميع المسافات البيضاء بين العلامات لإنتاج أصغر ملف ممكن، وهو مثالي للتخزين أو الإرسال عبر الشبكة. كلاهما يحافظ على معنى المستند &#39؛s؛ فقط المسافات البيضاء غير المهمة تتغير.

هل يغير التنسيق معنى XML الخاص بي؟

لا . يتم تغيير المسافات البيضاء فقط بين العلامات - لم يتم تغيير العناصر والسمات ومحتوى النص والتعليقات و cdata. نظرًا لأنه يتم الاحتفاظ بمسافة بيضاء كبيرة داخل العقد النصية و cdata ، يتصرف المستند جيدًا بشكل متماثل قبل التنسيق وبعده.

هل يتم حفظ التعليقات وأقسام cdata؟

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

هل يمكن لهذه الأداة التحقق من صحة XML الخاص بي؟

نعم. قبل التنسيق ، يتم تحليل المستند بالكامل ، ويتم الإبلاغ عن المشكلات الهيكلية - عنصر غير مغلق ، أو علامة إغلاق لا تتطابق مع علامته الافتتاحية ، أو قسم تعليق أو CDATA غير منتهي - برقم سطر حتى تتمكن من إصلاحها بسرعة. إنه يتحقق من التكوين الجيد ، وليس الصلاحية مقابل مخطط DTD أو XSD.

لماذا فشل تنسيق XML الخاص بي؟

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

هل من الآمن تنسيق XML الذي يحتوي على بيانات حساسة؟

نعم. يعمل المحلل اللغوي بالكامل في JavaScript في متصفحك - لا يحمل أي طلب شبكة بياناتك ، ولا يتم تسجيل أي شيء أو تخزينه ، وتعمل الأداة في وضع عدم الاتصال بمجرد تحميلها. XML Holding API Keys أو سلاسل الاتصال أو سجلات العملاء لا تترك جهازك أبدًا.

هل يمكنني تحويل XML المنسق إلى JSON بعد ذلك؟

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


كتبه Liton - منشئ Toolz.dev وWP Adminify وقائمة طويلة من مشاريع Laravel وReact. كل أداة مذكورة هنا تعمل مجانًا وبشكل كامل في متصفحك على [Toolz.dev](/.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!