2008-10-21 31 views
3

我正在寫在VB.NET一個小應用程序,我想一些類要能自己寫出來,以XML作爲一個「保存」功能。我已經看到用於生成VB類的XSD文件,它們可以非常容易地將自己序列化爲XML。我會怎麼做,如果我有我需要遵守,因爲我剛剛創建的類自己的任何預先存在的XML格式?我怎樣寫在VB.NET容易XML序列化對象?

回答

6

使用的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 

Reference

2

既然你問使它「易」,然後有三個規律可循,這將有助於使事情變得非常簡單:

  1. 僅使用可序列
  2. 不要使用集合屬性類型或數組作爲屬性需要被序列化
  3. 沒有與「壞」的副作用性能。 「壞」,我主要是指兩個公共財產,由相同的基礎私人領域支持。

請注意,如果您違反這些規則,您可能仍會序列化您的課程,但這可能需要更多的工作。

對於項目#2,快速修復是利用一個數據表或數據集,因爲這些是可序列化。

0

去一個簡單的「保存」功能,既可以使用.NET XML序列化[1],或者創建自己的內存DateSet正堅持在儘可能多的DateTables作爲您認爲合適的「世界的狀態」。它取決於你想要堅持的對象模型的完成方式。

[1]最簡單的例子,我可以很快找到(C#,抱歉,但你會得到的要點)http://www.jonasjohn.de/snippets/csharp/xmlserializer-example.htm