2008-10-21 38 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