تحويل XML إلى CSV

يعمل على جهازك · الملف لا يغادر جهازك.

أضف ملف XML من سجلات مكررة — <records><record>…</record></records>، خلاصة RSS، تصديرًا من قاعدة بيانات — واحصل على CSV بصف لكل سجل. تُقرأ الوثيقة بمحلل XML في متصفحك، ثم تُكتشف تلقائيًا أطول قائمة من العناصر المكررة، أيًّا كان ما يغلّفها — سمة على الغلاف، أو عنوان الخلاصة ورابطها بجانب عناصرها — ويسمّي سطر النتيجة القائمة التي استعملها.

يُفرد كل سجل كما في أداة JSON إلى CSV: العناصر المتداخلة أعمدة بنقاط (address.city)، والسمات أعمدة تبدأ بـ @ ‏(@id)، والعناصر الداخلية المكررة التي لها عناصر فرعية أعمدة مرقّمة (line.0.sku)، والعناصر النصية المكررة تُضمّ بفواصل منقوطة (a;b)، وصف العناوين اتحاد كل الأعمدة. وتُكتب القيم كما هي في XML تمامًا. يُكتب CSV بترميز UTF-8 مع BOM اختيارية لـ Excel.

كيفية تحويل XML إلى CSV

  1. أضف ملف XML أو الصق النص.
  2. اختر فاصل المخرج وعلامة BOM إن أردت.
  3. اضغط «حوّل إلى CSV» وراجع المعاينة.
  4. نزّل ملف .csv.

الصيغ المدعومة والحدود

المدخل
XML — ملف أو نص ملصوق، يُقرأ بالترميز الذي يعلنه
المخرج
CSV وفق RFC 4180، UTF-8، مع BOM اختيارية
الصفوف
أطول قائمة من العناصر المكررة
مكان المعالجة
داخل متصفحك — الملف لا يغادر جهازك

ليست مناسبة لِـ: المستندات التي فيها عدة قوائم من السجلات — لا تصبح صفوفًا إلا أطولها؛ ولغيرها حوّل إلى JSON، وانسخ تلك القائمة، وحوّلها بأداة JSON إلى CSV.

كيف تُعرف الصفوف

الصفوف هي أطول قائمة من العناصر المكررة في أي مكان تحت الجذر، أيًّا كان ما يغلّفها. فيعطي <records count="2"><record>…</record><record>…</record></records> صفًا لكل <record>، مع أن للغلاف سمة. وتعطي خلاصة RSS صفًا لكل <item>، بأعمدة مثل title وlink وpubDate، مع أن عنوان القناة نفسها ورابطها يجاوران العناصر. ويسمّي السطر تحت النتيجة القائمةَ المستخدمة، مثل rss.channel.item.

والقيم التي تجاور تلك القائمة، كعنوان الخلاصة نفسها، ليست جزءًا من أي سجل فتُترك. وحين يحوي المستند عدة قوائم من السجلات، لا تصبح صفوفًا إلا أطولها. ولتحويل قائمة أخرى، حوّل الملف بأداة /xml-to-json، وانسخ تلك القائمة من [ إلى ]، ثم الصقها في /json-to-csv وحوّل.

ملف فيه سجل واحد فقط

حين لا يوجد عنصر مكرر يكون السجل الوحيد هو الصف الوحيد، وأعمدته أسماء حقوله هو: <records><record><name>Ali</name><city>Cairo</city></record></records> يعطي العمودين name وcity. فالملف الذي يحوي أحيانًا سجلًا واحدًا وأحيانًا سجلات كثيرة يحتفظ بصف العناوين نفسه، وهذا مهم حين يقرأ برنامج آخر الأعمدة بأسمائها.

كيف تُكتب القيم

تُكتب القيم كما هي في XML تمامًا: يبقى 1.50 هو 1.50، وTRUE هي TRUE، والعنصر الذي فيه NULL يعطي النص NULL، بينما العنصر الفارغ يعطي خلية فارغة. وتحتفظ 007 بأصفارها، والتواريخ تبقى كما كُتبت. والقيمة التي تبدأ بـ = أو + أو - أو @ تُسبق بفاصلة عليا (')، كما في /json-to-csv، حتى لا ينفّذها برنامج الجداول معادلة.

والعناصر الفرعية المكررة التي لا تحوي إلا نصًا تُضمّ بفواصل منقوطة في خلية واحدة، فيعطي عنصرا <tag> القيمة a;b. أما العناصر الفرعية المكررة التي لها عناصر فرعية خاصة بها فتأخذ أعمدة مرقّمة، مثل line.0.sku وline.1.sku. وتبقى بادئات مساحات الأسماء في أسماء الأعمدة، كما في soap:Body.price. والنص الذي يجاور عناصر فرعية يذهب إلى عمود #text دون موضعه بينها. ويُقرأ الملف بالترميز الذي يعلنه سطره الأول.

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

هل يغادر ملفي جهازي؟
لا. تجري المعالجة بالكامل داخل متصفحك وبقدرة جهازك نفسه. الملف لا يغادر حاسوبك أو هاتفك، وبعد أن تستخدم الأداة مرة واحدة، تواصل العمل حتى إن انقطع الإنترنت.
كيف تعرف الأداة أي العناصر هي الصفوف؟
تأخذ أطول قائمة من العناصر المكررة تحت الجذر — فـ <records><record>…</record></records> يعطي صفًا لكل <record>، وخلاصة RSS صفًا لكل <item>. والقيم التي تجاور تلك القائمة، كعنوان الخلاصة نفسها، تُترك. وإن لم يوجد عنصر مكرر يصبح السجل الوحيد صفًا واحدًا، وأعمدته أسماء حقوله.
أين تذهب السمات؟
إلى أعمدة تبدأ بـ @، فالعنصر <record id="3"> يعطي عمودًا اسمه @id. والنص الذي يجاور عناصر فرعية يذهب إلى عمود #text.

أدوات ذات صلة

المزيد في الجداول والبيانات

هذه الصفحة بلغات أخرى: English · Deutsch · Français · Español · Русский · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা