簡體   English   中英

如何在VB.NET中編寫對象以簡化XML序列化?

[英]How do I write objects for easy XML Serialization in VB.NET?

我正在VB.NET中編寫一個小型應用程序,我希望某些類能夠將自身寫出到XML中以充當“保存”功能。 我已經看到用於生成VB類的XSD文件,這些類可以很容易地將其自身序列化為XML和從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. 沒有具有“不良”副作用的屬性。 所謂“壞”,我主要是指兩個公共屬性,它們由同一個基礎私有字段支持。

請注意,如果您違反了這些規則,則可能仍然可以序列化您的類,但是可能還有很多工作要做。

對於第2項,快速解決方案是使用數據表或數據集,因為它們是可序列化的。

要使用簡單的“保存”功能,請使用.net xml序列化[1]或在內存中創建DateSet以將“世界狀態”持久保存在您認為合適的許多DateTables中。 而是取決於要持久化的對象模型的復雜程度。

[1]最簡單的示例,我很快就能找到(C#,對不起,您會發現要點) http://www.jonasjohn.de/snippets/csharp/xmlserializer-example.htm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM