ToolDeck

JSON إلى XML

تحويل JSON إلى صيغة XML

جرب مثالاً

إدخال JSON

إخراج XML

يعمل محليًا · آمن للصق الأسرار
سيظهر XML هنا…

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

يُعدّ JSON (تدوين كائنات JavaScript) وXML (لغة الترميز الموسّعة) التنسيقَين السائدَين لتبادل البيانات في تطوير البرمجيات. يعتمد JSON على أزواج مفتاح-قيمة ومصفوفات بصيغة مدمجة، بينما يُغلّف XML البيانات بوسوم افتتاحية وختامية مع خصائص اختيارية. يعني تحويل JSON إلى XML ترجمةَ مكوّناته البنيوية الأساسية — الكائنات والمصفوفات والسلاسل النصية والأرقام والقيم المنطقية وقيمة null — إلى مستند XML صحيح البنية يعكس تداخل العناصر الأصلي.

لا يزال XML التنسيقَ المطلوب في كثير من الأنظمة المؤسسية وواجهات برمجة التطبيقات الحكومية وخدمات SOAP الإلكترونية والمعايير الصناعية كـHL7 (الرعاية الصحية) وFpML (التمويل) وXBRL (التقارير المالية). حين يُنتج تطبيقك JSON بينما يتوقع الطرف المستقبل XML، يتولى المحوّل عملية الترجمة دون الحاجة إلى إعادة الهيكلة يدويًا. يتبع التحويل قواعد ربط واضحة: تصبح كائنات JSON عناصر XML، وتصبح عناصر المصفوفة عناصر شقيقة متكررة، وتصبح القيم الأولية عُقَدًا نصية.

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

لماذا تستخدم محوّل JSON إلى XML الإلكتروني؟

كتابة XML يدويًا من مصدر JSON أمرٌ شاق ومعرّض للأخطاء. فالوسوم غير المتطابقة والعناصر الختامية المنسية والتداخل الخاطئ تُنتج مستندات لا تجتاز التحقق من المخطط. يتولى المحوّل عملية الترجمة البنيوية تلقائيًا.

تحويل فوري في متصفحك
الصق JSON واحصل على XML صحيح البنية على الفور. لا حاجة لإرسال طلبات إلى خادم، أو ضبط سطر أوامر، أو تثبيت تبعيات. يعمل التحويل بالكامل في JavaScript على جهازك.
🔒
حافظ على خصوصية بياناتك
لا يغادر JSON الذي تُدخله نافذة المتصفح أبدًا. تتم عمليتا التحليل وإنتاج XML بالكامل على جانب العميل، مما يجعل الأداة آمنة لتحويل الحمولات التي تحتوي على مفاتيح API أو رموز مصادقة أو بيانات الإنتاج.
📋
لا حساب ولا تسجيل دخول
افتح الصفحة، والصق JSON، وانسخ مخرجات XML. لا نماذج تسجيل، ولا تحقق من البريد الإلكتروني، ولا قيود على الاستخدام.
🌳
معالجة تلقائية للبنى المتداخلة
تتحول الكائنات المتداخلة بعمق والمصفوفات المختلطة وقيم null بشكل صحيح. تحافظ الأداة على التسلسل الهرمي الكامل لمدخلات JSON في شجرة XML الناتجة.

حالات استخدام تحويل JSON إلى XML

التكامل مع خدمات SOAP
تُعيد واجهة REST البرمجية بيانات JSON، لكن نقطة نهاية SOAP لدى الشريك تتطلب نصوص طلبات بتنسيق XML. حوّل حمولة JSON إلى XML قبل تغليفها في مغلّف SOAP.
تبادل البيانات المؤسسية
كثيرًا ما تقبل أنظمة ERP وCRM القديمة استيرادات XML فقط. حوّل تصديرات JSON من الأدوات الحديثة إلى تغذيات XML تطابق المخطط المتوقع.
إعداد ملفات تهيئة CI/CD
تستخدم بعض أدوات البناء (Maven وAnt وMSBuild) ملفات إعداد بتنسيق XML. أنتج مقاطع إعداد XML من ملفات معاملات JSON أثناء عمليات البناء الآلية.
إعداد بيانات اختبار ضمان الجودة
أنشئ نماذج اختبار XML من مجموعات بيانات JSON. أنتج بسرعة مستندات XML صحيحة لاختبار محللات XML أو تحويلات XSLT أو استعلامات XPath.
الجسر بين التنسيقات في خطوط أنابيب البيانات
يمكن لخطوط أنابيب ETL التي تستوعب XML تلقّي البيانات من واجهات برمجة التطبيقات المنتجة لـJSON. حوّل نتائج JSON الوسيطة إلى XML قبل التحميل في مرحلة المعالجة القائمة على XML.
تعلّم بنية XML
يمكن للطلاب الدارسين لـXML لصق بنى JSON مألوفة ومشاهدة تمثيل XML المقابل، مما يجعل تداخل الوسوم والتسلسل الهرمي للعناصر وبنية المستند أمورًا ملموسة.

قواعد ربط JSON بـXML

نظرًا لغياب معيار موحّد يحكم تحويل JSON إلى XML، تنتج الأدوات المختلفة مخرجات متباينة. يوضح الجدول أدناه اتفاقيات الربط المعتمدة في هذه الأداة وفي معظم المكتبات الشائعة (js2xmlparser وxmlbuilder وfast-xml-parser). سادت اتفاقية العناصر الشقيقة المتكررة للمصفوفات لأنها تعكس الطريقة التي تُمثِّل بها مخططات XML المجموعات بشكل طبيعي — إذ يُعدّ كل عنصر كيانًا مستقلًا لا ابنًا مُغلَّفًا — وتتكامل بسلاسة مع استعلامات XPath وتحويلات XSLT.

JSON TypeJSON ExampleXML Output
Object{"name": "Alice"}<name>Alice</name>
Nested object{"user": {"age": 30}}<user><age>30</age></user>
Array{"colors": ["red", "blue"]}<colors>red</colors><colors>blue</colors>
String"hello"<root>hello</root>
Number42<root>42</root>
Booleantrue<root>true</root>
Nullnull<root/>
Empty object{}<root/>
Empty array[](no child elements)

أمثلة برمجية

فيما يلي مقاطع قابلة للتشغيل لتحويل JSON إلى XML في ثلاثة بيئات مختلفة. يُنتج كل مثال XML صحيح البنية من كائن JSON نموذجي.

JavaScript (Node.js)
import { create } from 'xmlbuilder2';

const json = {
  order: {
    id: 1024,
    items: [
      { sku: "A1", qty: 2 },
      { sku: "B3", qty: 1 }
    ],
    shipped: false
  }
};

const xml = create({ version: '1.0' })
  .ele(json)
  .end({ prettyPrint: true });

console.log(xml);
// → <?xml version="1.0"?>
// → <order>
// →   <id>1024</id>
// →   <items>
// →     <sku>A1</sku>
// →     <qty>2</qty>
// →   </items>
// →   <items>
// →     <sku>B3</sku>
// →     <qty>1</qty>
// →   </items>
// →   <shipped>false</shipped>
// → </order>
Python
import json
import xmltodict

data = {
    "order": {
        "id": 1024,
        "items": [
            {"sku": "A1", "qty": 2},
            {"sku": "B3", "qty": 1}
        ],
        "shipped": False
    }
}

# xmltodict.unparse expects a single root key
xml = xmltodict.unparse(data, pretty=True)
print(xml)
# → <?xml version="1.0" encoding="utf-8"?>
# → <order>
# →   <id>1024</id>
# →   <items>
# →     <sku>A1</sku>
# →     <qty>2</qty>
# →   </items>
# →   <items>
# →     <sku>B3</sku>
# →     <qty>1</qty>
# →   </items>
# →   <shipped>false</shipped>
# → </order>
Go
package main

import (
	"encoding/json"
	"encoding/xml"
	"fmt"
)

type Item struct {
	SKU string `json:"sku" xml:"sku"`
	Qty int    `json:"qty" xml:"qty"`
}

type Order struct {
	XMLName xml.Name `xml:"order"`
	ID      int      `json:"id" xml:"id"`
	Items   []Item   `json:"items" xml:"items"`
	Shipped bool     `json:"shipped" xml:"shipped"`
}

func main() {
	raw := `{"id":1024,"items":[{"sku":"A1","qty":2},{"sku":"B3","qty":1}],"shipped":false}`

	var order Order
	json.Unmarshal([]byte(raw), &order)

	out, _ := xml.MarshalIndent(order, "", "  ")
	fmt.Println(xml.Header + string(out))
	// → <?xml version="1.0" encoding="UTF-8"?>
	// → <order>
	// →   <id>1024</id>
	// →   <items>
	// →     <sku>A1</sku>
	// →     <qty>2</qty>
	// →   </items>
	// →   ...
}

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

هل تحويل JSON إلى XML عملية بلا فقدان بيانات؟
من الناحية البنيوية، نعم — كل قيمة في JSON تُربط بعنصر XML أو عقدة نصية. غير أن XML لا يُميّز بين الأرقام والقيم المنطقية والسلاسل النصية بالطريقة التي يفعلها JSON. فالقيمة 42 في JSON تصبح المحتوى النصي "42" في XML. إذا اعتمد النظام المستقبِل على تعريفات النوع في مخطط XML (XSD)، يمكنه استعادة الأنواع الأصلية أثناء التحليل. وبغير مخطط، تُفقَد معلومات النوع فعليًا في المستند المُحوَّل.
كيف تُحوَّل مصفوفات JSON إلى XML؟
يصبح كل عنصر في المصفوفة عنصر XML شقيقًا يحمل نفس اسم الوسم. فمثلًا، مصفوفة JSON "colors": ["red", "blue"] تُنتج عنصرَين: &lt;colors&gt;red&lt;/colors&gt; و&lt;colors&gt;blue&lt;/colors&gt;. تُغلّف بعض المحوّلات المصفوفات في عنصر أب (مثل &lt;colorsList&gt;)، لكن أسلوب العناصر الشقيقة المتكررة أكثر شيوعًا ويتطابق مع الاتفاقية المعتمدة في JAXB وJackson وfast-xml-parser.
ماذا يحدث لقيم null عند التحويل؟
تتحول قيمة null في JSON عادةً إلى عنصر XML فارغ — فمثلًا، "middle_name": null تصبح &lt;middle_name/&gt;. تضيف بعض المكتبات خاصية xsi:nil="true" للإشارة إلى قيمة null صريحة، وهو مفيد حين يتحقق النظام الهدف من مخطط XSD. تُخرج هذه الأداة عنصرًا فارغًا مُغلقًا ذاتيًا بشكل افتراضي.
هل يمكنني تحويل XML مجددًا إلى JSON؟
نعم، لكن التحويل العكسي ليس دقيقًا دائمًا. ميزات XML كالخصائص وتعليمات المعالجة والتعليقات والمحتوى المختلط ومساحات الأسماء لا تمتلك ما يقابلها مباشرةً في JSON. قد يُنتج تحويل XML إلى JSON ثم إعادته إلى XML مستندًا مختلفًا بنيويًا. إذا كنت بحاجة إلى تحويل XML إلى JSON، استخدم محوّل XML إلى JSON مخصصًا يحافظ على الخصائص ومساحات الأسماء.
كيف أتعامل مع مفاتيح JSON غير الصالحة كأسماء عناصر XML؟
لا يمكن أن تبدأ أسماء عناصر XML برقم أو تحتوي على مسافات أو تشمل معظم الأحرف الخاصة. إذا كان JSON يحتوي على مفتاح مثل "2024-data" أو "first name"، يجب على المحوّل تعقيمه — عادةً بإضافة شرطة سفلية في البداية أو استبدال الأحرف غير الصالحة بشرطات سفلية. تحقق من مخرجات المحوّل وعدّل أسماء المفاتيح في JSON المصدر إذا كان XML الناتج يحتاج إلى اجتياز التحقق من XSD.
ما الحجم الأقصى لملف JSON الذي تستطيع الأداة معالجته؟
يعمل المحوّل في محرك JavaScript بمتصفحك، لذا يعتمد الحد العملي على الذاكرة المتاحة. تعالج معظم المتصفحات الحديثة مستندات JSON يصل حجمها إلى 50-100 ميغابايت دون مشاكل. للملفات الأكبر من ذلك، استخدم محوّلًا يعمل بنمط التدفق كـxmltodict في Python أو أداة سطر أوامر تعالج البيانات بشكل تدريجي دون تحميلها كاملةً في الذاكرة.
هل مخرجات XML صحيحة البنية أم مطابقة للمخطط؟
المخرجات دائمًا صحيحة البنية (well-formed) — الوسوم مُتداخلة بشكل صحيح، والأحرف الخاصة مُعالَجة بالإفلات، والمستند يحتوي على عنصر جذري واحد. أما مطابقة المخطط (validity) فتعتمد على المخطط الهدف (XSD أو DTD). صحة البنية ضمانة هيكلية؛ أما المطابقة فتشترط توافق أسماء العناصر وترتيب التداخل وأنواع المحتوى مع تعريف مخطط محدد.