我正在 VB.NET 中编写一个小型应用程序,我希望某些类能够将自己写到 XML 中以用作“保存”功能。我见过用于生成 VB 类的 XSD 文件,这些类可以很容易地将自己序列化进出 XML。如果我确实有任何预先存在的 XML 格式需要遵守,因为我只是自己创建类,我该怎么做?
Mark
问问题
14853 次
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
既然你问要让它“简单”,那么需要遵循三个规则,这将有助于让事情变得非常简单:
- 仅使用可序列化的属性类型
- 不要使用集合或数组作为需要序列化的属性
- 没有具有“坏”副作用的属性。我所说的“坏”主要是指由同一底层私有字段支持的两个公共属性。
请注意,如果您违反这些规则,您可能仍然可以序列化您的课程,但这可能需要更多的工作。
对于第 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 回答