بعد فتح ملف CSV أو لصقه تحصل على XML سليم البنية: عنصر جذر، وعنصر صف لكل سجل، وكل قيمة عنصرًا فرعيًا أو سمة. العناوين التي ليست أسماء XML صالحة، مثل Order ID أو 2024 total، يُعاد تسميتها وتُذكر كل إعادة تسمية. يُحوَّل الملف في متصفحك ولا يُرفع أبدًا.
طريقة تحويل CSV إلى XML
- اختر فتح ملف، أو أفلت ملف
.csv أو .tsv أو .txt على الأداة، أو اختر لصق. وإذا بدت الأعمدة خاطئة فراجع المحدِّد والترميز في إعدادات الاستيراد. - سمِّ العنصر الجذر وعنصر الصف (
rows وrow افتراضيًا) بما يتوقعه النظام المستقبِل. - اختر كتابة القيم بصفتها، وطريقة التعامل مع القيم الفارغة، والمسافة البادئة، والتعريف، ثم اختر نسخ أو تنزيل XML.
إذا كان النظام الذي سيقرأ الملف يتوقع أسماء وسوم محددة، فأعِد تسمية أعمدة CSV أولًا بأداة مطابقة أعمدة CSV كي لا تلزم أي إعادة تسمية تلقائية.
ما يفعله كل خيار
| عناصر فرعية | الخيار الافتراضي: <row><Customer>Smith & Sons</Customer>…</row>. يحفظ فواصل الأسطر في القيم ويناسب أغلب أدوات الاستيراد. |
|---|---|
| سمات | عنصر واحد ذاتي الإغلاق لكل صف: <row Customer="Smith & Sons" …/>. مختصر؛ وتُكتب علامات الجدولة وفواصل الأسطر في القيم بصيغة 	 و و كي يحتفظ بها المحلّل. |
| حذف القيم الفارغة | معطّل افتراضيًا، فتصبح الخلية الفارغة عنصرًا فارغًا مثل <Ship_date/>. وعند تفعيله يُحذف العنصر أو السمة من ذلك الصف. |
| المسافة البادئة | مسافتان (الافتراضي) أو 4 مسافات أو بلا (مضغوط)، الذي يكتب المستند كله في سطر واحد. |
| إضافة تعريف XML | مفعّل افتراضيًا: السطر الأول <?xml version="1.0" encoding="UTF-8"?>. ويُعطَّل عندما يُضمَّن XML في مستند آخر. |
يخضع اسما الجذر والصف لقواعد الأسماء نفسها التي تخضع لها العناوين؛ والقيمة الفارغة أو غير الصالحة تعود إلى rows أو row، أو تحصل على شرطة سفلية في بدايتها.
كيف تصبح أسماء الأعمدة أسماء XML
- تصبح المسافات
_، ويصبح أي حرف غير الأحرف والأرقام و. و- و_ شرطة سفلية _: Total (EUR) ← Total__EUR_، وe-mail:work ← e-mail_work. وتُستبدل النقطتان الرأسيتان، فلا تُنشأ بادئات مساحات أسماء. - الاسم الذي يبدأ برقم أو
. أو - يحصل على شرطة سفلية في بدايته (2024 total ← _2024_total)؛ وكذلك الاسم الذي يبدأ بـxml بأي حالة أحرف، لأن XML يحجزه (xml_ref ← _xml_ref). - إذا انتهى عنوانان إلى الاسم نفسه، يحصل الثاني على
_2 (a b وa_b ← a_b وa_b_2). وأسماء XML حساسة لحالة الأحرف، فيبقى Name وname مختلفين. - تُحفظ الأحرف من أي نظام كتابة:
Größe و価格 اسما XML صالحان، وكذلك الأسماء العربية. والعنوان الفارغ يصبح أولًا Column 7 ثم Column_7. - تُذكر كل إعادة تسمية تحت الخيارات بصيغة
old → new، وتذكر ملاحظة فوق المعاينة عددها.
كيف تُكتب القيم
- تُهرَّب
& و< و> في نص العنصر؛ وتُهرَّب في السمات أيضًا ". وفيما عدا ذلك تُكتب القيم كما في ملف CSV تمامًا: تحتفظ 00731 بأصفارها، ولا يُخمَّن أي نوع. - يمنع XML 1.0 أغلب أحرف التحكم (من U+0000 إلى U+001F عدا علامة الجدولة وحرف السطر الجديد وحرف الرجوع إلى بداية السطر)، وU+FFFE وU+FFFF، والبدائل غير المقترنة، حتى لو هُرّبت. لذا تُحذف ويُعرض عدد القيم المتأثرة.
- تُقرأ الفواصل وعلامات الاقتباس وفواصل الأسطر داخل علامات الاقتباس وفق RFC 4180؛ ويبقى فاصل السطر فاصل سطر حقيقيًا داخل العنصر الفرعي.
- الناتج دائمًا بترميز UTF-8.
حل المشكلات
- أداة الاستيراد لا تجد حقلًا. الأرجح أنه أُعيدت تسميته. راجع القائمة تحت الخيارات، وأعِد تسمية العمود في ملف CSV أو عدّل المطابقة في النظام المستقبِل.
- يبلّغ المحلّل عن خطأ في الترميز. افتح الملف المصدر بترميزه الحقيقي من «إعدادات الاستيراد»؛ فلا يكون XML بترميز UTF-8 سليم إلا إذا فُك ترميز CSV بشكل صحيح.
- كل البيانات في عنصر واحد. خُمِّن المحدِّد خطأً؛ اختر فاصلة أو فاصلة منقوطة أو علامة جدولة أو خطًا عموديًا من «إعدادات الاستيراد».
- أحتاج إلى CDATA أو مساحات أسماء أو مخطط. لا يكتب المحوّل إلا عناصر وسمات بسيطة؛ أضِف ذلك في خطوة لاحقة.
الحدود والخصوصية
الملفات حتى 25 ميغابايت أو 100 ألف صف أو مليوني خلية تُفتح مع معاينة مباشرة لأول 200 صف. أما الملفات الأكبر فتُحوَّل تدفقيًا: يُقرأ الملف مرتين على أجزاء (مرة لقياس الأعمدة، ومرة للكتابة)، وتذكر ملاحظة أن الملف المنزَّل يشمل الملف كله، ولا يتوفر نسخ. والحد الأقصى لملف الناتج الواحد 4 غيغابايت.
يجري التحويل في عامل خلفي داخل علامة التبويب هذه، فتبقى الصفحة مستجيبة ويوقفه زر إلغاء. ولا يُرسل ملف CSV أبدًا إلى أي خادم.
مثال
ملف طلبات مُصدَّر فيه مسافات وأقواس في العناوين، وعلامة &، وأقواس زاوية، وتاريخ فارغ، حُوّل بالإعدادات الافتراضية. أُعيدت تسمية ثلاثة عناوين؛ وأصبح Ship date الفارغ <Ship_date/>.
Order ID,Customer,Total (EUR),Ship date 10071,"Smith & Sons",249.00,2025-02-03 10072,"Café <Lumière>",18.50,
<?xml version="1.0" encoding="UTF-8"?>
<rows>
<row>
<Order_ID>10071</Order_ID>
<Customer>Smith & Sons</Customer>
<Total__EUR_>249.00</Total__EUR_>
<Ship_date>2025-02-03</Ship_date>
</row>
<row>
<Order_ID>10072</Order_ID>
<Customer>Café <Lumière></Customer>
<Total__EUR_>18.50</Total__EUR_>
<Ship_date/>
</row>
</rows>أسئلة وأجوبة
لماذا تغيّر اسم عمودي؟
لا يمكن أن تحتوي أسماء عناصر XML على مسافات أو على أغلب علامات الترقيم، ولا أن تبدأ برقم، ولا أن تبدأ بـxml. ويُجري المحوّل أصغر تغيير يعطي اسمًا صالحًا وفريدًا، ويذكر كل تغيير.
هل أستخدم العناصر أم السمات؟
استخدم العناصر الفرعية ما لم يطلب النظام المستقبِل سمات. تحفظ العناصر فواصل الأسطر كما كُتبت؛ أما قيم السمات فتوحّد محلّلات XML المسافات البيضاء فيها، ولهذا يرمّز المحوّل علامات الجدولة وفواصل الأسطر بمراجع أحرف.
هل تحصل الأرقام أو التواريخ على أنواع؟
لا. لا أنواع قيم مدمجة في XML، فتُكتب كل قيمة بالنص الموجود في ملف CSV. وتأتي الأنواع من المخطط أو من البرنامج الذي يقرأ الملف.