كيف يمكنني كتابة كائنات للتسلسل السهل XML في VB.NET؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

أنا أكتب تطبيقًا صغيرًا في VB.NET وأود أن تتمكن بعض الفصول من كتابة نفسها إلى XML لتكون بمثابة ميزة "حفظ". لقد رأيت ملفات XSD المستخدمة لإنشاء فئات VB التي يمكن أن تتجول في وخارج XML بسهولة بالغة. كيف يمكنني القيام بذلك إذا كان لدي أي تنسيق XML موجود مسبقًا أحتاج إلى الامتثال إليه لأنني فقط أقوم بإنشاء الفصول بنفسي؟

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

المحلول

استخدم مساحات أسماء System.xml و System.xml.Serialization. يصفون الفصول التي يمكنك استخدامها لتعليق أعضاء الفصول الدراسية مع العلامة المقابلة.

على سبيل المثال (في C#):

[XmlRoot("foo")]
public class Foo
{
     [XmlAttribute("bar")] 
     public string bar;
     [XmlAttribute("baz")] 
     public double baz;
}

أو في vb.net (قد لا يكون صحيحًا تمامًا):

<XmlRoot ("foo")> _
Public Class Foo
     <XmlAttribute ("bar")>_
     Public bar As String
     <XmlAttribute ("baz")>_
     Public baz As String
End Class

يمكنك بعد ذلك استخدام فئة XMLSerializer لإخراج XML.

في C#:

using(XmlSerializer xmls = new XmlSerializer(typeof(Foo)){
    TextWriter tw = new StreamWriter( "foo.xml" );
    //use it!
}

أو VB:

Using xmls As New XmlSerializer(gettype(Foo)), _
    tw As TextWriter = New StreamWriter("foo.xml")

    ''//use it!
End Using

المرجعي.

نصائح أخرى

نظرًا لأنك سألت عن جعلها "سهلة" ، فهناك ثلاث قواعد يجب متابعتها ستساعد على الحفاظ على الأمور بسيطة للغاية:

  1. فقط استخدم أنواع الممتلكات القابلة للتسلسل
  2. لا تستخدم المجموعات أو المصفوفات كخصائص تحتاج إلى التسلسل
  3. ليس لديك خصائص مع آثار جانبية "سيئة". من خلال "BAD" ، أقصد في الغالب عقارين عامين مدعومان بنفس المجال الخاص الأساسي.

لاحظ أنه إذا كسرت هذه القواعد ، فربما لا يزال بإمكانك إجراء تسلسل صفك ، ولكن من المحتمل أن يكون ذلك أكثر من العمل.

بالنسبة للبند رقم 2 ، يستخدم الإصلاح السريع مجموعة بيانات أو بيانات قابلة للاعتداء ، حيث يمكن التسلسل.

للذهاب مع ميزة "حفظ" بسيطة إما استخدم تسلسل .NET XML [1] أو إنشاء نفسك في مواعيد الذاكرة لاستمرار "حالة العالم" في العديد من مواد البيانات التي تنسى. يعتمد الأمر على مدى كونك نموذج الكائن الذي تحاول استمراره.

1] أبسط مثال يمكن أن أجده بسرعة (C#، آسف ولكن ستحصل على جوهر) http://www.jonasjohn.de/snippets/csharp/xmlserializer-example.htm

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