تخطَّ إلى المحتوى

تحويل XML إلى Excel

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

  • لا يُخزَّن أبدًا
  • لا طابور ولا انتظار
  • دون تسجيل ودون علامة مائية

كيف تعمل الأداة

1

أضف XML

أفلِت ملف .xml أو الصق محتوى XML. تعمل أيضًا ملفات XML Spreadsheet 2003 الخاصة بـ Excel.

2

اختر السجلات

يُحدَّد العنصر المتكرر (منتج، بند، صف) تلقائيًا، مع قائمة بكل الجداول الأخرى في الملف ومعاينة مباشرة.

3

نزّل الملف

ملف .xlsx بأرقام وتواريخ مضبوطة النوع في كل عمود، وصف عناوين عريض قابل للتصفية.

العثور على الصفوف داخل شجرة

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

تتحول السمات والعناصر الأبناء كلتاهما إلى أعمدة، وهذا ضروري لأن XML يتيح طريقتين لقول الشيء نفسه، والأنظمة المختلفة تختار بشكل مختلف. فملف مُصدَّر يكتب id="42" كسمة، وآخر يكتب <id>42</id> كعنصر، وثالث يفعل الأمرين في المستند نفسه. الجدول لا يهتم بهذا الفرق، ولا ينبغي أن تهتم به أنت، لذا يصل كلاهما كأعمدة، مع تمييز السمات حتى لا يتعارض اسم يظهر بالشكلين.

يُسطَّح التداخل الأعمق من مستوى واحد بضم أسماء العناصر، تمامًا كما في JSON المتداخل. وحين يحتوي السجل على عنصر ابن متكرر، كثلاثة بنود داخل طلب واحد، لا يستطيع الجدول تمثيله كصفوف دون تكرار كل ما حوله، لذا تبقى القيم المتكررة في خليتها. تُحذف مساحات الأسماء (namespaces) من أسماء الأعمدة، لأن عمودًا اسمه ns2:customerName لا يفيد أحدًا في جدول بيانات، بينما تبقى القيم نفسها دون أي تغيير.

ملفات XML النصية لا تحتوي على جدول، ونتيجة تحويلها سيئة. صفحة XHTML أو مقال DocBook أو فصل ePub أو رسم SVG هي مستندات لا مجموعات بيانات: بنيتها متداخلة وغير منتظمة بطبيعتها، ولا يوجد فيها سجل متكرر تُبنى منه الصفوف. سينتج التحويل شيئًا ما، لكنه لن يكون مفيدًا. هذه الصفحة مخصصة لملفات XML للبيانات، والوضوح بشأن هذا الفرق يوفّر وقتًا أكثر من أي قدر من الضبط.

عندما تحتاج إلى شيء آخر

حين تعرف البنية، استخرجها عن قصد بدل أن تستنتجها. الأمر xmlstarlet sel -t -m "//order" -v "@id" -o "," -v "customer" -n data.xml يسحب الحقول التي تريدها بالضبط عبر تعبير XPath، وxq يفعل الشيء نفسه بصياغة شبيهة بـ jq. هذا هو الفرق بين تحويل ينجح مصادفةً وتحويل يمكنك وضعه في مسار عمل آلي.

مع الملفات الكبيرة جدًا، كل ما هنا لا يناسبها: فالمستند يُحلَّل في الذاكرة كاملًا، وXML المحلَّل كشجرة يشغل عادةً أضعاف حجم الملف. أما المحللات المتدفقة، مثل iterparse في Python أو SAX بأي لغة، فتمر على مستند بحجم عدة غيغابايتات بذاكرة ثابتة، وهي النهج الواقعي الوحيد بعد بضع مئات من الميغابايتات.

الأسئلة الشائعة

كيف تعرف الأداة أي جزء من XML هو الجدول؟

السجلات هي العناصر التي تتكرر تحت الأصل نفسه: كل <book> داخل <catalog>، وكل <item> داخل قناة RSS. تُقيَّم كل مجموعة بحسب عدد سجلاتها وحقولها، ويُختار أفضلها، وتبقى المجموعات الأخرى على بُعد نقرة واحدة.

ماذا يحدث للسمات والعناصر المتداخلة؟

يصبح كل منها عمودًا يحمل اسم مساره: السمة id تصبح id، و<author><name> تصبح author/name، و<price currency="EUR"> تعطي price وprice/@currency. أما الحقل الذي يتكرر داخل سجل واحد فيُجمع في خلية واحدة أو يُوزَّع على أعمدة مرقّمة.

هل يمكنها فتح ملفات Excel XML Spreadsheet 2003؟

نعم. تُكتشف هذه الملفات وتُحوَّل ورقةً ورقة، مع الحفاظ على أرقامها وتواريخها ونصوصها كما هي.

ماذا لو كان الملف يضم عدة جداول، كالطلبات وبنودها؟

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

هل يُخزَّن ملفي في أي مكان؟

لا. يُحلَّل XML ويُكتب المصنف هنا، ولا يُخزَّن أي شيء.

هل من الآمن فتح XML من مصدر مجهول؟

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

معلومة مفيدة: المستندات النصية التي ليست بيانات، مثل صفحات XHTML ومقالات DocBook، لا تحتوي على جدول يمكن العثور عليه، ونتيجة تحويلها رديئة. وقد تتجاوز الملفات التي يزيد حجمها على 100 MB تقريبًا ذاكرة متصفحك.

أضِف هذه الأداة إلى موقعك

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