هل هناك طريقة للقيام كائن (مع سماتها) تسلسل إلى XML؟

StackOverflow https://stackoverflow.com/questions/390800

  •  23-08-2019
  •  | 
  •  

سؤال

قم بإنشاء فئة (استدعاء FormeLement). يجب أن تحتوي هذه الفئة على بعض الخصائص مثل البيانات الوصفية التي لديهم مع عناصر البيانات (الاسم ورقم التسلسل، القيمة - التي هي مجرد سلسلة، إلخ).

هذه الفئة لها سمات فئات التحقق من صحة كتلة التحقق من صحة النوع.

أريد أن تسلسلها إلى XML وتغمرها. تحقق من أن جميع خصائص الفصل بما في ذلك سمات كتلة التحقق من صحة المستحضرات على قيد الحياة

بعض الاقتراحات؟

لا يوجد حل صحيح

نصائح أخرى

يحتوي .NET Framework هذا المدمج، باستخدام C # أنت تفعل ذلك مثل هذا:

// This code serializes a class instance to an XML file:
XmlSerializer xs = new XmlSerializer(typeof(objectToSerialize));

using (TextWriter writer = new StreamWriter(xmlFileName))
{
     xs.Serialize(writer, InstanceOfObjectToSerialize);
} 

وهذا القصاص هو مثال على كيفية استخدام ملف XML مرة أخرى إلى مثيل فئة:

// this code creates a class instance from the file we just made:
objectToSerialize newObject;
XmlSerializer xs = new XmlSerializer(typeof(objectToSerialize));

using (TextReader reader = new StreamReader(xmlFileName))
{
    newObject = (ObjectToSerialize) xs.Deserialize(reader);
}

يجب عليك تحديد الفصل الخاص بك باستخدام السمة [Serializable] لهذه العمل. إذا كنت ترغب في جعل إخراج XML الخاص بك أكثر جمالا قليلا، فيمكنك استخدام سمات [XMLELELELEMENT] و [Xmlattribute] على خصائص الفصل الخاصة بك للحصول على تسلسلها في مخطط الاختيار الخاص بك.

بقول التسلسل، هل تقصد استخدام آلية التسلسل الرسمية، أو تحقيق تأثير مماثل؟

إذا كانت الكائنات الخاصة بك فاصوليا، فيمكنك استخدام التفكير لكتابة فئة عامة تأخذ فئة ويكتب اسم فئةها وخصائصها. يمكن أن تقرأ المواد بالمثل من XML وإنشاء الكائن (وهو ما يفعله Apache Digester بشكل أساسي).

ما قاله جوناثون هولاند.

ومع ذلك، سألت أيضا عن التحقق من الصحة. إذا كنت تستخدم الرمز Jonathan تم نشره، وجميع خصائصك إرادة تسلسل وتسلسل بشكل صحيح. ولكن إذا كنت ترغب حقا في التحقق من ذلك، فهناك خاصية يمكنك تعيينها باستخدام كائن Xmlserializer الخاص بك لخطط * .xsd للتحقق من الصحة. يمكنك إنشاء المخطط بسهولة كافية من صفك باستخدام xsd.exe أداة سطر الأوامر المضمنة مع Visual Studio.

أيضا، يبدو أنك قد ترغب في التحكم في ما إذا كانت بعض الخصائص لصلتك تسلسل كسمات أو عناصر. لمست جوناثون على ذلك، لكنني أريد إظهار مثال:

[Serializable]
public class FormElement
{
   [XmlAttribute]
   public string Name {get; set;};

   [XmlAttribute]
   public int Sequence {get; set;};

   [XmlAttribute]
   public string Value {get; set;};

   [XmlElement]
   public Validation OnValidate{get; set;}

   [NonSerialized]
   public string UnimportantProperty {get; set;};

}

أخيرا، يجب أن تكون النوع لكل خاصية تريد تسلسلها متسلسلا، ويجب أن تكون أنواع معقدة مثل XMLELEMEMES. وإلا فلن تكون قادرا على القيام بذلك.

xstream هي مكتبة جافا جيدة جدا للقيام بذلك.

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