Skip to content

محوّل JSON إلى XML

الصق JSON واحصل على XML فوراً. يحوّل الكائنات والمصفوفات وسمات @_ في المتصفح — دون رفع أي بيانات. مجاني وخاص ولا يتطلب تسجيلاً.

بدون تتبّع يعمل في المتصفّح مجاني
الخيارات · مسافتان · <bdi>JSON</bdi> → <bdi>XML</bdi>
المسافة البادئة
0 حرف
XML الإخراج
0 سطر
Reviewed for XML 1.0 well-formedness, @_/#text convention correctness, and root normalization accuracy — Go Tools Engineering Team · May 29, 2026

ما هو تحويل JSON إلى XML وكيف يعمل؟

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

تستخدم هذه الأداة الاتفاقية الأكثر انتشاراً — نفس الاتفاقية المستخدمة في fast-xml-parser (Node.js) وxmltodict (Python) وJAXB (Java) — مطبّقةً بالعكس:

**1. تطبيع عنصر الجذر.** الفرق الأهم بين JSON وXML هو قيد الجذر. JSON لا يمتلك مفهوم الجذر؛ XML يتطلب واحداً بالضبط. يتعامل المحوّل مع أربع حالات تلقائياً. كائن بمفتاح واحد يستخدم ذلك المفتاح كجذر XML: { "config": {...} }.... كائن بمفاتيح متعددة يُلفّ في : { "a": 1, "b": 2 }12. مصفوفة على المستوى الأعلى تُلفّ كـ .... قيمة أساسية تُلفّ كـ value.

**2. البادئة @_ → سمات XML.** مفاتيح JSON المسبوقة بـ @_ تصبح سمات XML على العنصر المحيط. { "element": { "@_id": "42", "@_class": "primary" } } تُنتج . هذه البادئة هي الاتفاقية القياسية — لا يبدأ أي اسم عنصر XML صالح بـ @، لذا لا يحدث تعارض أبداً مع أسماء العناصر الفرعية.

**3. #text → محتوى نص العنصر.** عندما يحتاج عنصر إلى سمات ومحتوى نص، يُخزَّن النص تحت مفتاح #text: { "price": { "@_currency": "USD", "#text": "29.99" } }29.99. العناصر ذات محتوى النص فحسب (بدون مفاتيح @_) تتحول إلى عناصر نصية عادية دون هذه الوساطة.

**4. المصفوفات → عناصر متجاورة مكررة بالاسم نفسه.** يسمح XML بعناصر فرعية متعددة بالاسم نفسه؛ JSON يستخدم المصفوفات للقوائم المرتبة. مصفوفة JSON تحت مفتاح تُنتج عناصر فرعية مكررة تُعيد استخدام اسم المفتاح: { "items": ["a", "b"] } تُنتج ab (العنصران أشقاء تحت الأب). عندما يكون مدخل JSON كله مصفوفة على المستوى الأعلى، يُضاف غلاف ويصبح كل عنصر ابناً من اسم احتياطي ثابت يُستخدَم فقط في تلك الحالة.

**5. متماثل مع XML إلى JSON.** اتفاقيتا @_ و#text المستخدمتان هنا هما نفس الاتفاقيتين المستخدمتين في محوّل XML إلى JSON المرافق. هذا يعني أن التحويل ذهاباً وإياباً JSON → XML → JSON يحافظ على السمات ومحتوى النص وبنية العناصر — طالما يتبع JSON المدخل اتفاقيتَي @_/#text.

**متى تحوّل JSON إلى XML؟** السيناريوهات الأكثر شيوعاً هي: (1) إرسال البيانات إلى خدمة ويب SOAP قديمة أو خدمة قائمة على XML تتطلب جسم طلب XML؛ (2) توليد ملفات إعداد XML (Spring وMaven وAnt وموارد Android) من بيانات JSON؛ (3) إنتاج XML لـ sitemap أو تغذية RSS من بيانات محتوى JSON؛ (4) التشغيل البيني مع أنظمة مؤسسية (ERP وCRM وEDI) تستهلك XML؛ (5) توليد SVG أو تنسيقات رسومية أخرى قائمة على XML برمجياً من بيانات JSON. لتنسيق XML الناتج والتحقق منه، استخدم منسّق XML.

// Convert JSON to XML in Node.js using fast-xml-parser
import { XMLBuilder } from 'fast-xml-parser';

const data = {
  catalog: {
    product: {
      '@_id': 'P01',
      '@_category': 'electronics',
      name: 'Wireless Headphones',
      price: {
        '@_currency': 'USD',
        '#text': '79.99'
      }
    }
  }
};

const builder = new XMLBuilder({
  attributeNamePrefix: '@_',   // @_ keys become XML attributes
  textNodeName: '#text',       // #text key becomes element text content
  ignoreAttributes: false,     // process @_ attribute keys
  format: true,                // pretty-print with indentation
  indentBy: '  ',              // 2-space indent
});

const xml = builder.build(data);
console.log(xml);
// <catalog>
//   <product id="P01" category="electronics">
//     <name>Wireless Headphones</name>
//     <price currency="USD">79.99</price>
//   </product>
// </catalog>

الميزات الرئيسية

تحويل مباشر

يتحدث إخراج XML فوراً أثناء الكتابة أو لصق JSON — دون الحاجة إلى زر «تحويل». تتحول المدخلات الكبيرة (أكثر من 200 كيلوبايت) تلقائياً إلى الوضع اليدوي للحفاظ على استجابة المتصفح.

تطبيع تلقائي لعنصر الجذر

يتطلب XML عنصر جذر واحداً بالضبط. الكائنات بمفتاح واحد تستخدم مفتاحها كجذر؛ الكائنات بمفاتيح متعددة تُلفّ في ؛ المصفوفات على المستوى الأعلى تصبح ...؛ القيم الأساسية تصبح value — دائماً XML صالح كإخراج.

اتفاقية السمات @_ و#text

المفاتيح المسبوقة بـ @_ تصبح سمات XML؛ مفتاح #text يصبح محتوى نص العنصر. هذا يُطابق اتفاقية fast-xml-parser وxmltodict، مما يجعل الإخراج متماثلاً مع محوّل XML إلى JSON المرافق.

تحويل المصفوفات إلى عناصر مكررة

مصفوفات JSON تحت مفتاح تُنتج عناصر فرعية مكررة تُعيد استخدام اسم المفتاح — دون تحويل للمفرد. { "items": [1, 2, 3] } تُنتج ثلاثة أشقاء . مدخل مصفوفة على المستوى الأعلى يُلفّ كـ ... باستخدام كاسم ثابت حرفي.

خصوصية 100% قائمة على المتصفح

يتم التحويل كلياً محلياً في متصفحك باستخدام JavaScript. JSON الخاص بك — بما في ذلك بيانات الاعتماد والإعدادات الداخلية والحمولات الحساسة — لا يُرسَل إلى أي خادم ولا يُسجَّل ولا يُخزَّن أبداً.

تحويل ذهاباً وإياباً متماثل مع XML إلى JSON

اتفاقيتا @_ و#text مشتركتان مع محوّل XML إلى JSON المرافق. التحويل ذهاباً وإياباً JSON → XML → JSON يحافظ بدقة على السمات ومحتوى النص والبنية المتداخلة.

أمثلة

كائن استجابة API

{"user":{"id":42,"name":"Alice Kim","email":"alice@example.com","role":"admin","address":{"city":"Seoul","country":"KR"}}}

كائن JSON بمفتاح واحد على المستوى الأعلى يصبح عنصر الجذر في XML. الكائن المتداخل address يُنتج عنصر <address> فرعياً بأبناء <city> و<country>. لأن الكائن الخارجي يحتوي على مفتاح واحد فحسب («user»)، لا يُضاف أي غلاف — «user» نفسه هو الجذر. الأرقام مثل 42 تصبح محتوى نص حرفياً: <id>42</id>.

مصفوفة على المستوى الأعلى

[{"id":1,"name":"Widget A","price":9.99},{"id":2,"name":"Widget B","price":14.99},{"id":3,"name":"Widget C","price":4.49}]

عندما يكون المدخل كله مصفوفة JSON (غير ملفوفة في كائن)، يُنتج المحوّل <root><item>...</item></root>. كل عنصر مصفوفة يصبح ابناً من <item> — «item» اسم غلاف ثابت يُستخدم حصرياً للمصفوفات على المستوى الأعلى. هذه الحالة الوحيدة التي يظهر فيها <item>؛ المصفوفات تحت مفتاح كائن تُعيد استخدام اسم ذلك المفتاح لكل عنصر بدلاً من ذلك.

كائن بسمات ومحتوى نص

{"catalog":{"product":{"@_id":"P01","@_category":"electronics","name":"Wireless Headphones","price":{"@_currency":"USD","#text":"79.99"}}}}

المفاتيح المسبوقة بـ @_ تصبح سمات XML على العنصر: @_id يصبح id="P01" و@_category يصبح category="electronics" على عنصر <product>. مفتاح #text يصبح محتوى نص العنصر — لذا يُنتج كائن price هو <price currency="USD">79.99</price>. يتسق هذا التحويل ذهاباً وإياباً مع محوّل XML إلى JSON الذي يستخدم نفس اتفاقيتَي @_ و#text.

كيفية الاستخدام

  1. 1

    الصق JSON الخاص بك

    أدخل أو الصق بيانات JSON في حقل الإدخال أعلاه. يمكنك أيضاً النقر على «تحميل مثال» لتجربة عينة — كائن استجابة API أو حمولة مصفوفة أو كائن يستخدم سمات @_ و#text.

  2. 2

    شاهد إخراج XML مباشرة

    يظهر XML فوراً في لوحة الإخراج. الكائنات بمفتاح واحد تستخدم مفتاحها كجذر؛ الكائنات بمفاتيح متعددة تُلفّ في ؛ المفاتيح المسبوقة بـ @_ تصبح سمات؛ المصفوفات تصبح عناصر فرعية مكررة. اضبط المسافة البادئة (مسافتان أو 4) حسب الحاجة.

  3. 3

    انسخ أو حمّل

    انقر على «نسخ» لنقل XML إلى الحافظة، أو «تحميل» لحفظه كملف .xml. للتحقق من النتيجة أو إعادة تنسيقها، الصقها في منسّق XML.

مزالق التحويل الشائعة

الكائن بمفاتيح متعددة يحصل على غلاف غير متوقع

إذا كان JSON على المستوى الأعلى يمتلك مفاتيح متعددة، يُلفّ الإخراج كلها في . هذا XML صحيح (الذي يتطلب جذراً واحداً)، لكنه قد لا يُطابق مخططك المستهدف. أعد تشكيل JSON في كائن بمفتاح واحد للتحكم في اسم عنصر الجذر.

✗ خطأ
// Input: { "status": 200, "data": { "id": 1 } }
// Output: <root><status>200</status><data><id>1</id></data></root>
// Root is <root> — may not match your schema
✓ صحيح
// Wrap in a named key to control the root element
// Input: { "response": { "status": 200, "data": { "id": 1 } } }
// Output: <response><status>200</status><data><id>1</id></data></response>

المصفوفة على المستوى الأعلى تحصل على غلاف

المصفوفة JSON على المستوى الأعلى لا تمتلك اسم عنصر، لذا تُلفّ كـ .... إذا أردت أسماء وسوم ذات معنى، لفّ المصفوفة في كائن مسمى أولاً.

✗ خطأ
// Input: [{ "id": 1 }, { "id": 2 }]
// Output: <root><item><id>1</id></item><item><id>2</id></item></root>
// Tag names are generic
✓ صحيح
// Wrap in a named key for meaningful tag names
// Input: { "products": [{ "id": 1 }, { "id": 2 }] }
// Output: <root><products><id>1</id></products><products><id>2</id></products></root>
// Each array element reuses the key name "products" as its tag

مفاتيح سمات تفتقر إلى البادئة @_

لإنتاج سمة XML، يجب أن يكون مفتاح JSON مسبوقاً بـ @_. بدون البادئة، يُعامَل المفتاح كعنصر فرعي لا كسمة.

✗ خطأ
// Input: { "tag": { "id": "42", "name": "Alice" } }
// Output: <tag><id>42</id><name>Alice</name></tag>  ← id is a child element
✓ صحيح
// Use @_ prefix for attributes
// Input: { "tag": { "@_id": "42", "name": "Alice" } }
// Output: <tag id="42"><name>Alice</name></tag>  ← id is an attribute

عنصر بسمات ونص — #text مفقود

إذا أردت أن يمتلك عنصر سمات XML ومحتوى نص، يجب استخدام مفتاح #text للنص. بدونه، ليس للنص مكان يذهب إليه وسيكون العنصر فارغاً أو يُنتج خطأً.

✗ خطأ
// Input: { "price": { "@_currency": "USD", "value": "29.99" } }
// Output: <price currency="USD"><value>29.99</value></price>
// Text is a child element, not text content
✓ صحيح
// Use #text for element text content
// Input: { "price": { "@_currency": "USD", "#text": "29.99" } }
// Output: <price currency="USD">29.99</price>  ← text content

مفاتيح JSON تحتوي على أحرف غير صالحة لأسماء عناصر XML

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

✗ خطأ
// JSON key starts with digit — invalid XML element name
// Input: { "1stItem": "value" }
// Output: <1stItem>value</1stItem>  ← invalid XML
✓ صحيح
// Use a valid XML element name
// Input: { "firstItem": "value" }
// Output: <firstItem>value</firstItem>  ← valid XML

أحرف خاصة في القيم لا تحتاج إلى هروب يدوي

يجب ألا يحتوي محتوى نص XML على < أو > أو & أو " الخام — يجب تهريبها كـ < و> و& و". يُهرِّب المحوّل هذه الأحرف تلقائياً في محتوى نص العنصر وقيم السمات. إذا أجرت المعالجة اللاحقة هروباً مضاعفاً، تحقق من أن محلل XML الخاص بك يستهلك بايتات XML الخام بدلاً من إعادة هروب المحتوى المُهرَّب مسبقاً.

✗ خطأ
// JSON: { "query": "name = 'Alice' & role = 'admin'" }
// Converter outputs: <query>name = 'Alice' &amp; role = 'admin'</query>
// If double-processed: &amp;amp; — consumer is re-escaping
✓ صحيح
// Converter output is correct — consume it as XML, not as a raw string
// <query>name = 'Alice' &amp; role = 'admin'</query>
// XML parser decodes to: name = 'Alice' & role = 'admin'

حالات الاستخدام الشائعة

استدعاء خدمات الويب SOAP والـ XML القديمة
ابنِ حمولة JSON في تطبيقك، وحوّلها إلى XML، وأرسلها بطريقة POST إلى نقطة نهاية SOAP. هذا يتجنب بناء سلاسل XML يدوياً ويتيح لك العمل مع البيانات في بنية JSON أصلية حتى لحظة الحاجة إلى تسلسلها للخدمة القديمة.
توليد ملفات إعداد XML
تستخدم Spring وMaven وAnt وTomcat وAndroid تنسيقات إعداد XML. ولّد أو حوّل بيانات الإعداد كـ JSON — أسهل للمقارنة والتحكم في الإصدارات — ثم حوّل إلى XML للنشر.
إنتاج XML لخرائط المواقع وتغذيات RSS
أنظمة إدارة المحتوى ومولّدات المواقع الثابتة كثيراً ما تخزّن بيانات الصفحات كـ JSON. حوّل تلك البيانات إلى XML لـ sitemap أو تغذية RSS لإرسالها إلى محركات البحث أو توزيع المحتوى على قارئات التغذية.
تكامل بيانات المؤسسات (EDI / ERP / CRM)
أنظمة ERP (SAP وOracle) ومنصات CRM وشبكات EDI كثيراً ما تتبادل البيانات بـ XML. حوّل تصديرات JSON من واجهات REST الحديثة إلى XML لإطعام هذه الأنظمة دون بناء مسلسل XML مخصص.
ملفات موارد Android
موارد نصوص Android وقيود التخطيط وإدخالات Manifest كلها XML. ولّد أو حدّث ملفات الموارد برمجياً من مصادر بيانات JSON وحوّل إلى تنسيق XML المطلوب لنظام بناء Android.
توليد SVG والرسومات المتجهة
SVG هو XML. ابنِ بنية SVG كبيانات JSON — مسارات وأشكال وألوان وتحويلات — ثم حوّل إلى XML لإنتاج ملفات SVG صالحة للويب أو الطباعة أو أدوات التحرير المتجهية.

تفاصيل تقنية

تحليل JSON متوافق مع RFC 8259
يُحلَّل مدخل JSON باستخدام JSON.parse() الأصلي في المتصفح، المتوافق بالكامل مع RFC 8259. يوفر رسائل خطأ دقيقة في الصياغة تتضمن معلومات الموضع بأفضل جهد ممكن (رقم السطر والعمود)، ويتعامل مع جميع أنواع بيانات JSON: السلاسل النصية والأرقام والقيم المنطقية وnull والمصفوفات والكائنات.
مسلسل JSON إلى XML تكراري مخصص
بعد التحليل، يستعرض مسلسل تكراري مخصص شجرة JSON. مفاتيح الكائنات التي تبدأ بـ @_ تُصدَر كسمات XML على العنصر الأب. مفتاح #text يُصدَر كمحتوى نص العنصر. مفاتيح الكائنات العادية تصبح عناصر فرعية. قيم المصفوفات تُنتج عناصر متجاورة مكررة بالاسم نفسه. الأحرف الخاصة (< و> و& و" و') في محتوى النص وقيم السمات تُهرَّب إلى مراجع كيانات XML.
تطبيع عنصر الجذر
لأن XML يتطلب عنصر جذر واحداً بالضبط، يطبّق المسلسل تطبيع عنصر الجذر قبل بناء المستند: الكائنات بمفتاح واحد تستخدم المفتاح كجذر؛ الكائنات بمفاتيح متعددة والمصفوفات على المستوى الأعلى تحصل على غلاف مُنشأ تلقائياً. هذا يضمن أن الإخراج دائماً XML مُصاغ بشكل سليم بغض النظر عن شكل المدخل.
100% قائم على المتصفح — بدون رفع ملفات أو خادم
تتم جميع المعالجة في محرك JavaScript في متصفحك. لا تُنقَل أي بيانات عبر الشبكة في أي وقت. تتحول المدخلات الأكبر من 200 كيلوبايت تلقائياً من الوضع المباشر إلى الوضع اليدوي (مطلوب نقر «تحويل» صريح) للحفاظ على استجابة المتصفح أثناء التسلسل الثقيل.

أفضل الممارسات

تحكم في عنصر الجذر بكائن بمفتاح واحد
أنظف طريقة لإنتاج XML ذي معنى هي التأكد من أن JSON على المستوى الأعلى كائن بمفتاح واحد يكون مفتاحه اسم عنصر الجذر المطلوب. تغليف البيانات متعددة المفاتيح تحت مفتاح مسمى واحد يمنحك جذراً ذا معنى دلالي بدلاً من الغلاف العام .
استخدم @_ و#text لـ XML الثقيل بالسمات
إذا كان مخطط XML المستهدف يستخدم سمات كثيرة (شائع في ملفات الإعداد وSVG ومغلفات SOAP)، أعد تشكيل JSON لاستخدام مفاتيح مسبوقة بـ @_ و#text قبل التحويل. سيُطابق XML الناتج المخطط المستهدف بدقة دون معالجة لاحقة.
لفّ المصفوفات في كائنات مسماة للحصول على أسماء وسوم ذات معنى
المصفوفة على المستوى الأعلى تُنتج نمط ... العام، حيث اسم ثابت. تغليف المصفوفة تحت مفتاح مسمى — { "products": [...] } — يُنتج عناصر مكررة (يُعاد استخدام اسم المفتاح لكل عنصر مصفوفة) تحت غلاف . هذا يمنحك اسم وسم ذا معنى مجالي وهو دائماً مفضل لـ XML الذي سيُحلَّل أو يُتحقق منه بمخطط.
تحقق من الإخراج باستخدام منسّق XML
بعد التحويل، الصق إخراج XML في منسّق XML للتحقق من صياغته السليمة والتحقق من المسافات البادئة وتحديد أي مشاكل هيكلية قبل إرسال XML إلى خدمة تالية أو الالتزام به في التحكم بالإصدارات.
طهّر مفاتيح JSON قبل التحويل
يجب أن تبدأ أسماء عناصر XML بحرف أو شرطة سفلية ولا تحتوي على مسافات أو معظم الأحرف الخاصة. إذا كانت مفاتيح JSON الخاصة بك تأتي من مصدر خارجي (اسم عمود قاعدة بيانات أو اسم حقل API أو مدخل مستخدم)، راجعها للتحقق من صلاحية اسم XML قبل التحويل لتجنب الإخراج المشوّه.

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

هل تُرسَل بيانات JSON إلى خادم عند استخدام هذه الأداة؟
لا. يتم التحويل كلياً داخل متصفحك باستخدام JavaScript. لا يُنقَل JSON عبر الشبكة ولا يُخزَّن على أي خادم ولا يُسجَّل أو يُحلَّل. هذا يجعل الأداة آمنة للاستخدام مع حمولات JSON التي تحتوي على بيانات اعتماد API أو إعداد قاعدة بيانات أو بيانات خدمة داخلية أو أي محتوى حساس آخر. يمكنك التحقق من ذلك بفتح تبويب «الشبكة» في متصفحك — لن ترى أي طلبات عند لصق JSON أو تحويله.
كيف تقرر الأداة ما هو عنصر الجذر في XML؟
يتطلب XML عنصر جذر واحداً بالضبط؛ JSON لا يمتلك هذا القيد. يطبّق المحوّل هذه القواعد: (1) كائن بمفتاح واحد يستخدم ذلك المفتاح كاسم عنصر الجذر — { "user": { ... } } تصبح <user>...</user>. (2) كائن بمفاتيح متعددة (مفتاحان أو أكثر على المستوى الأعلى) يُلفّ في عنصر <root> حتى تصبح جميع المفاتيح أبناء لجذر واحد. (3) مصفوفة على المستوى الأعلى تُلفّ كـ <root><item>...</item></root>، مع كل عنصر مصفوفة يصبح ابناً من <item>. (4) قيمة أساسية (سلسلة نصية أو رقم أو قيمة منطقية أو null) على المستوى الأعلى تصبح <root>value</root>. هذه القواعد تضمن أن الإخراج دائماً XML مُصاغ بشكل سليم بجذر واحد.
لماذا يُلفّ كائن JSON بمفاتيح متعددة في <root>؟
XML تنسيق مستند بمتطلب جذر صارم — يجب أن يمتلك مستند XML صالح عنصراً واحداً بالضبط على المستوى الأعلى. كائنات JSON يمكنها امتلاك أي عدد من المفاتيح على المستوى الأعلى، لذا عندما يمتلك JSON مفاتيح متعددة على المستوى الأعلى (مثل { "status": 200, "data": {...}, "meta": {...} })، لا يوجد مفتاح واحد يمكن استخدامه كجذر. اللفّ في <root> هو الاتفاقية الأكثر أماناً وقابلية للتنبؤ. إذا أردت اسم عنصر جذر مختلفاً، أعد تشكيل JSON في كائن بمفتاح واحد قبل التحويل — مثلاً { "response": { "status": 200, "data": {...} } }.
كيف تتحول مصفوفة JSON على المستوى الأعلى إلى XML؟
تُلفّ مصفوفة على المستوى الأعلى كـ <root><item>...</item><item>...</item></root>. كل عنصر مصفوفة يصبح ابناً من <item> — «item» اسم ثابت يُستخدم فقط للمصفوفات على المستوى الأعلى. هذا يختلف عن المصفوفات المتداخلة تحت مفتاح كائن: إذا كتبت { "products": [...] }، يصبح كل عنصر مصفوفة عنصر <products> (يُعيد استخدام اسم المفتاح)، وليس <product>. إذا أردت أسماء وسوم مخصصة لمصفوفة على المستوى الأعلى، لفّها في كائن مسمى أولاً: { "products": [...] } يمنحك عناصر <products> مكررة.
كيف أحوّل مفاتيح JSON إلى سمات XML؟
أسبق المفتاح بـ @_ وسيُصدره المحوّل كسمة XML بدلاً من عنصر فرعي. على سبيل المثال، { "tag": { "@_id": "42", "@_lang": "en", "#text": "Hello" } } تُنتج <tag id="42" lang="en">Hello</tag>. اتفاقية البادئة @_ هي نفسها المستخدمة في fast-xml-parser (Node.js) وxmltodict (Python)، مما يجعل الإخراج يتسق في التحويل ذهاباً وإياباً مع تلك المكتبات. وهي أيضاً الاتفاقية المستخدمة في محوّل XML إلى JSON المرافق.
ما استخدام مفتاح #text؟
عندما يحتاج عنصر إلى سمات XML ومحتوى نص في آنٍ واحد، لا يمكنك ببساطة عيَّن النص إلى عنصر فرعي — بل يجب أن يكون عقدة النص الخاصة بالعنصر. مفتاح #text في JSON الخاص بك يصبح ذلك المحتوى النصي. مثال: { "price": { "@_currency": "USD", "#text": "29.99" } } تُنتج <price currency="USD">29.99</price>. إذا كان الكائن يحتوي على مفتاح #text فحسب دون مفاتيح @_، فإنه يُنتج عنصراً نصياً عادياً: { "note": { "#text": "hello" } } يصبح <note>hello</note>.
هل تؤثر المسافة البادئة على بنية XML؟
لا. المسافة البادئة مجرد تغيير بصري — تُغيّر طريقة تنسيق XML لقابلية القراءة البشرية لكن لا تؤثر على بنية العناصر أو قيم السمات أو محتوى النص. اختر مسافتين للإخراج المضغوط أو 4 مسافات للإخراج الأكثر قابلية للقراءة. كلاهما يُنتجان XML متطابقاً دلالياً. تُعامل معظم محللات XML العقد النصية ذات المسافات البيضاء فحسب بين العناصر كمسافات بيضاء قابلة للتجاهل، لذا XML المُسنَّن والمضغوط متكافئان لأغراض التحليل.
كيف تتحول مصفوفة JSON متداخلة داخل كائن إلى XML؟
قيمة مصفوفة JSON تحت مفتاح تُنتج عناصر فرعية مكررة بالاسم نفسه، مُعيدةً استخدام اسم المفتاح لكل عنصر. على سبيل المثال، { "items": [1, 2, 3] } تُنتج ثلاثة أشقاء <items> — وليس <item>. وبالمثل، { "products": [{"name":"A"},{"name":"B"}] } تُنتج عنصرَي <products>، كل منهما يحتوي على ابن <name>. يُستخدَم اسم المفتاح كما هو لكل عنصر مصفوفة؛ لا يحدث أي تحويل للمفرد. المكان الوحيد الذي يظهر فيه الاسم الحرفي <item> هو عندما يكون مدخل JSON كله مصفوفة على المستوى الأعلى (انظر أعلاه)، حيث <item> اسم غلاف احتياطي ثابت يُستخدَم فقط في تلك الحالة.
كيف أحوّل XML مجدداً إلى JSON؟
استخدم محوّل XML إلى JSON المرافق. يطبّق اتفاقيتَي @_ و#text نفسهما بالعكس: سمات XML تصبح مفاتيح JSON مسبوقة بـ @_، ومحتوى نص العنصر المقرون بسمات يصبح مفتاح #text، والعناصر المتجاورة بالاسم نفسه المكررة تصبح مصفوفة JSON. الأداتان متماثلتان لحالات الاستخدام ذهاباً وإياباً.
هل يمكن التحقق من إخراج XML أو تنسيقه؟
نعم — الصق إخراج XML في منسّق XML للتحقق من صياغته السليمة وضبط المسافات البادئة أو الضغط. منسّق XML هو الأداة المناسبة لفحص XML وتلميعه بمجرد أن ينتجه هذا المحوّل.
هل هناك حد لحجم مدخل JSON؟
لا يوجد حد صارم، لكن المدخلات الأكبر من 200 كيلوبايت تتحول تلقائياً من التحويل المباشر إلى الوضع اليدوي. في الوضع اليدوي يظهر زر «تحويل» ويتم التحويل فقط عند النقر عليه — هذا يُبقي المتصفح متجاوباً أثناء التسلسل الثقيل. للملفات الكبيرة جداً (بعدة ميجابايت)، فكر في أدوات سطر الأوامر للحصول على أداء أفضل: node -e "const {XMLBuilder}=require('fast-xml-parser');console.log(new XMLBuilder({attributeNamePrefix:'@_'}).build(JSON.parse(require('fs').readFileSync('in.json','utf8'))))" أو سكريبت Python مكافئ مع xmltodict.
ما أنواع JSON المدعومة؟
جميع أنواع JSON الستة مدعومة. الكائنات تصبح عناصر XML بعناصر فرعية. المصفوفات تصبح عناصر متجاورة مكررة بالاسم نفسه. السلاسل النصية والأرقام والقيم المنطقية وnull تصبح محتوى نص عنصر. القيم المنطقية وnull تُسلسَل كتمثيلاتها النصية الحرفية: true وfalse ومحتوى فارغ لـ null. لا يُطبَّق أي إكراه للأنواع — تُكتَب الأرقام في محتوى نص XML بدقة كما تظهر في JSON، مع الحفاظ على الأرقام العشرية والدقة.

أدوات ذات صلة

عرض جميع الأدوات →

محوّل Base64 — ترميز وفك ترميز أونلاين

الترميز والتنسيق

رمّز وفك ترميز Base64 مجاناً أونلاين — محوّل فوري مع دعم UTF-8 والرموز التعبيرية. خصوصية 100% — يعمل في متصفّحك. جرّبه الآن.

محوّل CSV إلى JSON

الترميز والتنسيق

حوّل CSV إلى JSON في متصفحك. RFC 4180، استنتاج الأنواع، صف العنوان، أمان الأعداد الكبيرة. خصوصية 100%.

JSON Diff مقارنة

الترميز والتنسيق

قارن ملفي JSON فوراً في متصفحك. عرض جنباً إلى جنب مع تمييز الفروق، وإخراج JSON Patch (RFC 6902)، وتجاهل الحقول المزعجة كالطوابع الزمنية والمعرّفات. خصوصية تامة، بدون رفع ملفات.

منسق JSON — التحقق والضغط وإصلاح الأخطاء

الترميز والتنسيق

نسّق JSON وتحقّق من صحته وأصلح الأخطاء فوراً — محرّر مجاني أونلاين يعمل في متصفّحك. يدعم الضغط والتجميل والتحويل. جرّبه الآن.

مدقق JSON Schema

الترميز والتنسيق

تحقق فوراً من JSON مقابل أي JSON Schema في متصفحك. يدعم Draft 2020-12 و2019-09 وDraft-07 مع رسائل أخطاء دقيقة بالمسار. خصوصية تامة - بدون رفع ولا حساب، مجاني.

محوّل JSON إلى CSV

الترميز والتنسيق

حوّل JSON إلى CSV في متصفحك. RFC 4180، Excel، TSV، أنبوب. خصوصية 100%.