- 締切済み
VB.NETでXMLのデータをやり取りする方法
VB.NET 2003を使用して、Windowsソフトを開発しています。 データの保存にXMLを使用したいのですが、読み出せるのですが書き込めません。 どのような方法でもいいので、既存XMLファイルにデータを追加する方法をご教授願えませんか? また、ご存知であればでよいのですが、VB.NETでWindowsソフト開発で、XMLに関する解説が詳しく掲載されているサイトはありませんか?
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
こんな感じです。 Module Module1 Sub Main() Dim l_strPath As String = "C:\Text.xml" Dim l_dstデータセット As DataSet Dim l_encエンコーディング As System.Text.Encoding = System.Text.Encoding.GetEncoding(932) 'データセットを書く 'http://okwave.jp/kotaeru.php3?q=1583980 l_dstデータセット = 作成_データセット() 'データセットを出力 Call XML_書(l_dstデータセット, l_strPath) 'データセットを初期化 l_dstデータセット = New DataSet() 'データセットを読込 Call XML_読(l_dstデータセット, l_strPath) End Sub Sub XML_書(ByVal p_dstデータ As DataSet, ByVal p_strファイル As String) Dim l_str出力フォルダ As String = IO.Path.GetDirectoryName(p_strファイル) '出力実行 Dim l_swXML As New IO.StreamWriter(p_strファイル) p_dstデータ.WriteXml(l_swXML, XmlWriteMode.WriteSchema) l_swXML.Close() l_swXML = Nothing End Sub Sub XML_読(ByRef p_dstデータ As DataSet, ByVal p_strファイル As String) '読込実行 Dim l_swXML As New IO.StreamReader(p_strファイル) Dim l_xrdXML As New Xml.XmlTextReader(l_swXML) p_dstデータ.ReadXml(l_xrdXML) l_xrdXML.Close() l_swXML.Close() l_swXML = Nothing End Sub Function 作成_データセット() As DataSet Dim l_dtbデータテーブル As New DataTable("新テーブル") Dim l_drwデータロウ As DataRow Dim i As Integer Dim l_dstデータセット As New DataSet() l_dtbデータテーブル.Columns.Add("文字型", System.Type.GetType("System.String")) l_dtbデータテーブル.Columns.Add("整数型", System.Type.GetType("System.Int32")) l_dtbデータテーブル.Columns.Add("長整数型", System.Type.GetType("System.Int64")) For i = 1 To 26 l_drwデータロウ = l_dtbデータテーブル.NewRow l_drwデータロウ.Item("文字型") = Chr(48 + i) & Chr(64 + i) l_drwデータロウ.Item("整数型") = i * 1000 l_drwデータロウ.Item("長整数型") = i * 1000000 l_dtbデータテーブル.Rows.Add(l_drwデータロウ) Next l_dstデータセット.Tables.Add(l_dtbデータテーブル) Return l_dstデータセット End Function End Module
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
例えば、ファイルが使用中で同じ名前で書き込みできないということなら、最初にファイルをコピーして、そちらを使用するようにしたらどうでしょう。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>クローズする方法 StreamReaderだったら Close ですが、ぼけた回答だったらすみません。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>このファイルは別のプロセスが使用中です。 ファイルが、開かれたままになっているということですね。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
Imports System.Xml して XmlDocumentで Loadして 適当にいじって Saveで書き出せます そういうことではなくて、書き込めないという別の理由なら、 こういうXMLデータファイルをこういうやり方で読み込んだ そして、こういう処理をして、 こういうやり方でファイルに書き込もうとしたが こういう風に失敗するというように もう少し詳しく書いて下さい
補足
説明不足で申し訳ありませんでした。 XMLデータをStreamReaderで読み出し、DataSetとして使用します。 DataSet(正確にはDataTable)に対してデータ追加を行い、データの加工が終わったDataSetをStreamWriterを利用して書き込む際に以下のエラーが出ます。 'System.IO.IOException' のハンドルされていない例外が mscorlib.dll で発生しました。 追加情報 : プロセスはファイル "XXXX.xml" にアクセスできません。このファイルは別のプロセスが使用中です。
補足
ファイルが開きっぱなしってことはわかるのですが、クローズする方法がわからないんです。 あと、XMLでのデータの取り扱いがこれで本当によいのかどうかもわからない状態です。