1

ネットワーク (データベースではなく) からデータが到着するプロジェクトがあり、独自の解析特性があります。

解析プロセスは、 でいっぱいのクラスのオブジェクトの配列にデータを格納しますPublic Property

このクラスとその配列は、画面上の DataGridView に適切なテーブルとして値を表示する BindingSource へのオブジェクト データ ソースとして使用されます。

ここで、このデータをディスクに保存する必要があります (そして、後でデータを取得してネットワークに送り返すことができるようにする必要があります)。

私は以前に DataSet を XML に保存する作業を行ったことがあり、実装は簡単ですが、これは私を困惑させています。

この情報はすべてコードに含まれているため、保存するために各プロパティを 1 行ずつ入力する必要はないと思います。XMLメソッドを使用したり、バインダーからディスクにデータを取得したり、DataSourceオブジェクトに直接アクセスしたりできるように、データをバインダーから新しいDataSetに取得する方法を試しましたが、成功しませんでした。

後で DataSource オブジェクトに読み戻すことができる限り、ディスク内のプレーン テキストとして読み取り可能かどうかは気にしません。

それを達成する方法はありますか?

4

2 に答える 2

1

シリアル化はどうですか?

Dim fileStream As Stream = File.Open("somefile.txt", FileMode.Create)
Dim xmlFormatter As New System.Xml.Serialization.XmlSerializer(GetType(YourClass))
xmlFormatter.Serialize(fileStream, anObjectOfYourClass)
fileStream.Close()

Serializable()これを機能させるには、クラスに属性のアノテーションを付ける必要があります。これにより、属性を持つプロパティを除くすべてのプロパティが保存されNonSerialized()ます。もちろん、クラス内のすべてのタイプはシリアライズ可能である必要があります。

後でデータをロードするための手順は、を使用することを除いて同様ですxmlFormatter.Deserialize()

ドキュメントも参照してください。

于 2012-07-31T13:32:49.040 に答える
1

XmlSerializerを使用してオブジェクトを保存してみませんか?


例:

Class MyData
    Public Property Data1 As String
    Public Property Data2 As Int32
    Public Property Data3 As String()
End Class

Sub Main

    Dim d = New MyData() With { _
        .Data1 = "FooBar", _
        .Data2 = 1337, _
        .Data3 = new String(){"Foo", "Bar"} _
    }

    Dim serializer = new System.Xml.Serialization.XmlSerializer(gettype(MyData))

    '' Saving an object
    Using fs = new System.IO.FileStream("c:\users\username\mydata.xml", System.IO.FileMode.Create)
        serializer.Serialize(fs, d)
    End Using

    '' Loading the saved data to a new object        
     Using fs = new System.IO.FileStream("c:\users\username\mydata.xml", System.IO.FileMode.Open)
        Dim new_one = CType(serializer.Deserialize(fs), MyData)
        '' Do something
    End Using

End Sub

結果のファイルの内容:

<?xml version="1.0"?>
<MyData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Data1>FooBar</Data1>
  <Data2>1337</Data2>
  <Data3>
    <string>Foo</string>
    <string>Bar</string>
  </Data3>
</MyData>
于 2012-07-31T13:33:19.017 に答える