3

我正在 VB.NET 中编写一个小型应用程序,我希望某些类能够将自己写到 XML 中以用作“保存”功能。我见过用于生成 VB 类的 XSD 文件,这些类可以很容易地将自己序列化进出 XML。如果我确实有任何预先存在的 XML 格式需要遵守,因为我只是自己创建类,我该怎么做?

4

3 回答 3

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

参考

于 2008-10-21T21:26:15.823 回答
2

既然你问要让它“简单”,那么需要遵循三个规则,这将有助于让事情变得非常简单:

  1. 仅使用可序列化的属性类型
  2. 不要使用集合或数组作为需要序列化的属性
  3. 没有具有“坏”副作用的属性。我所说的“坏”主要是指由同一底层私有字段支持的两个公共属性。

请注意,如果您违反这些规则,您可能仍然可以序列化您的课程,但这可能需要更多的工作。

对于第 2 项,快速解决方法是使用数据表或数据集,因为它们是可序列化的。

于 2008-10-21T21:18:35.450 回答
0

要使用简单的“保存”功能,可以使用 .net xml 序列化 [1] 或在内存中创建一个 DateSet 以在您认为合适的任意数量的 DateTable 中保存“世界状态”。这取决于您尝试坚持的对象模型的复杂程度。

[1] 我能很快找到的最简单的例子(C#,对不起,但你会明白要点)http://www.jonasjohn.de/snippets/csharp/xmlserializer-example.htm

于 2008-10-21T21:25:22.627 回答