VB.NETで簡単なXMLシリアル化のためのオブジェクトを作成するにはどうすればよいですか?
-
03-07-2019 - |
質問
VB.NETで小さなアプリケーションを作成していますが、一部のクラスが「保存」として機能するようにXMLに書き出すことができるようにしたいと思います。特徴。私は、XSDファイルを使用して、非常に簡単にXMLをシリアル化およびシリアル化できるVBクラスを生成しました。クラスを自分で作成しているときに準拠する必要がある既存の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
他のヒント
「簡単に」することについて質問したので、物事を非常にシンプルに保つのに役立つ3つのルールがあります:
- シリアル化可能なプロパティタイプのみを使用
- シリアル化が必要なプロパティとしてコレクションや配列を使用しないでください
- 「悪い」というプロパティはありません。副作用。 「悪い」とは、主に、同じ基礎となるプライベートフィールドに裏打ちされた2つのパブリックプロパティを意味します。
これらのルールに違反した場合でも、おそらくクラスをシリアル化できますが、さらに多くの作業が必要になる可能性があります。
アイテム#2の場合、簡単に修正できるのはデータテーブルまたはデータセットを使用することです。これらはシリアル化可能であるためです。
単純な「保存」機能を使用するには、.net xmlシリアル化[1]を使用するか、メモリDateSetにnを作成して、「Table of the World」を適切なDateTableに保持します。むしろ、永続化しようとしているオブジェクトモデルの複雑さに依存します。
[1]私がすぐに見つけることができる最も簡単な例(C#、ごめんなさい、要点がわかります) http://www.jonasjohn.de/snippets/csharp/xmlserializer-example.htm