سؤال

لدي XML التي أريد أن الحمل على الكائنات ، التعامل مع تلك الكائنات (مجموعة القيم قراءة القيم) ثم قم بحفظ تلك XMLs مرة أخرى.من المهم بالنسبة لي أن يكون XML في الهيكل (xsd) التي تم إنشاؤها.

طريقة واحدة للقيام بذلك هو أن أكتب بلدي مسلسل, ولكن هناك بنيت في دعم أو مفتوحة المصدر في C# التي يمكنني استخدامها ؟

هل كانت مفيدة؟

المحلول

يمكنك إنشاء تسلسل C# الطبقات من مخطط (xsd) باستخدام xsd.exe:

xsd.exe dependency1.xsd dependency2.xsd schema.xsd /out:outputDir

إذا كان المخطط له تبعيات (المدرجة/استيراد المخططات) ، يجب أن تكون جميع المدرجة على نفس سطر الأوامر.

نصائح أخرى

هذا الرمز (C# DotNet 1.0 فصاعدا) يعمل بشكل جيد جدا على تسلسل معظم الكائنات إلى XML.(والعودة) أنها لا تعمل على الكائنات التي تحتوي على ArrayLists ، وإذا أمكن التمسك فقط باستخدام المصفوفات

using System;    
using System.IO;
using System.Text;
using System.Xml.Serialization;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;


public static string Serialize(object objectToSerialize)
{
    MemoryStream mem = new MemoryStream();          
    XmlSerializer ser = new XmlSerializer(objectToSerialize.GetType());         
    ser.Serialize(mem, objectToSerialize);                      
    ASCIIEncoding ascii = new ASCIIEncoding();
    return ascii.GetString(mem.ToArray());
}        

public static object Deserialize(Type typeToDeserialize, string xmlString)
{
    byte[] bytes = Encoding.UTF8.GetBytes(xmlString);
    MemoryStream mem = new MemoryStream(bytes);         
    XmlSerializer ser = new XmlSerializer(typeToDeserialize);
    return ser.Deserialize(mem);
}

LINQ to XML هو قوي جدا إذا كنت تستخدم .net framework 3.5 LINQ إلى XSD قد يكون من المفيد لك أيضا!

استخدام xsd.exe سطر الأوامر البرنامج الذي يأتي مع visual studio لإنشاء فئة الملفات التي يمكنك استخدامها في المشاريع الخاصة بك/حل النظام.Xml.التسلسل الاسم (على وجه التحديد ، XmlSerializer الدرجة) إلى تسلسل/deserialze تلك الفئات من وإلى القرص.

باستخدام النظام.Xml.التسلسل;هذا الاسم لديه كل الصفات سوف تحتاج إذا كنت تريد أن خريطة xml إلى أي وجوه عشوائي.بدلا من ذلك يمكنك استخدام xsd.exe أداة

ملف xsd.xsd {/دروس | /dataset} [/العنصر:عنصر] [/اللغة:اللغة] [/مساحة:مساحة] [/outputdir:الدليل] [يوري:يوري] والتي سوف تأخذ xsd الملفات وإنشاء c# أو vb.net دروس منها.

http://msdn.microsoft.com/en-us/library/x6c1kb0s(مقابل.71).aspx

أنا أتفق xsd هو في الحقيقة هراء...ولكن جعلوا آخر النسخة التي لا يكاد أي شخص يعرف عن.دعا xsd كائن مولد.في الإصدار القادم و لديها المزيد من الخيارات.فإنه ينشئ ملفات من XSD ويعمل رائعة.إذا كان لديك مخطط مولد مثل XML الجاسوس ؛ إنشاء xsd من xml و استخدام هذه الأداة.لقد خلق جدا جدا الطبقات المعقدة باستخدام هذه الأداة.ثم إنشاء فئات جزئية إضافية خصائص\طرق الخ ، ثم عند تحديث المخطط فقط ريجين الفصول الدراسية و أي تعديلات مستمرة في فئات جزئية.

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=7075

xsd.exe من مايكروسوفت لديها الكثير من الأخطاء :| جرب هذا المصدر المفتوح اللؤلؤ http://xsd2code.codeplex.com/

ونحن قد خلقت إطارا يمكن لصناعة السيارات في توليد C# الطبقات من XML.في visual البند القالب الذي قمت بتمرير XML و الطبقات يتم إنشاؤها تلقائيا في المشروع الخاص بك.باستخدام هذه الفئات يمكنك إنشاء/قراءة/كتابة XML.

التحقق من هذا الارتباط إطار و Visual C# قالب العنصر: انقر هنا

أراهن NetDataContractSerializer يمكن أن تفعل ما تريد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top