XMLファイル入力/出力(C#/VB.NET)
2010年05月25日
XMLファイル出力とXMLファイル入力のサンプル(ソース/コード)です。VB6以前ではINIファイルをよく使用しましたが、.NETではXMLが使用されるためINIファイルはあまり使用されないかもしれません。しかし、XMLはテキストエディタで編集すると間違いやすいので、INIファイルの方が良いと思いますが如何でしょうか。。。XMLファイル保存の仕組みを使ってウィンドウサイズを保存/回復するサンプルは「Windowサイズ保存(C#/VB.NET)」です。
INIファイルのサンプルは「INIファイル入力/出力(C#/VB.NET)」です。
' --------------------------------------------------------
' XMLファイル入出力のサンプル(VB.NET/VS2005)
' Imports System.IO (必要)
' Imports System.Text (必要)
' Imports System.Xml.Serialization (必要)
' XMLファイル
Private Const XML_FIL As String = "Xml.xml"
' XMLデータ
Public Class XmlData
' XML項目1
Public val1 As Integer = 123
' XML項目2
Public val2 As String = "ABC"
End Class
Public XmlDt As XmlData = New XmlData()
Private Sub Button1_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Button1.Click
' XMLデータの読込
ReadXml()
System.Diagnostics.Debug.WriteLine(XmlDt.val1)
System.Diagnostics.Debug.WriteLine(XmlDt.val2)
End Sub
' XMLデータのファイル保存
Private Sub SaveXml()
Dim sw As StreamWriter = Nothing
Try
' XMLファイルのPATH設定
Dim AppPath As String = _
System.AppDomain.CurrentDomain.BaseDirectory
Dim XmlPath As String = AppPath & XML_FIL
' XMLデータ保存
sw = New StreamWriter( _
XmlPath, False, Encoding.Default)
Dim serializer As XmlSerializer = _
New XmlSerializer(GetType(XmlData))
serializer.Serialize(sw, XmlDt)
Catch ex As Exception
System.Diagnostics.Debug.Write(ex)
Finally
If sw Is Nothing = False Then sw.Close()
End Try
End Sub
' XMLデータのファイル読込
Private Sub ReadXml()
Dim sr As StreamReader = Nothing
Try
' XMLファイルのPATH設定
Dim AppPath As String = _
System.AppDomain.CurrentDomain.BaseDirectory
Dim XmlPath As String = AppPath & XML_FIL
If File.Exists(XmlPath) Then
' XMLデータ読込
sr = New StreamReader( _
XmlPath, Encoding.Default)
Dim serializer As XmlSerializer = _
New XmlSerializer(GetType(XmlData))
XmlDt = CType(serializer.Deserialize(sr), _
XmlData)
Else
' XMLファイルが存在しない時は作成
SaveXml()
End If
Catch ex As Exception
System.Diagnostics.Debug.Write(ex)
Finally
If sr Is Nothing = False Then sr.Close()
End Try
End Sub
' --------------------------------------------------------
// -------------------------------------------------------
// XMLファイル入出力のサンプル(C#.NET/VS2005)
// using System.IO; (必要)
// using System.Text; (必要)
// using System.Xml.Serialization; (必要)
// XMLファイル
private const String XML_FIL = "Xml.xml";
// XMLデータ
public class XmlData
{
// XML項目1
public int val1 = 123;
// XML項目2
public String val2 = "ABC";
}
public static XmlData XmlDt = new XmlData();
private void button1_Click(object sender, EventArgs e)
{
// XMLデータの読込
ReadXml();
System.Diagnostics.Debug.WriteLine(XmlDt.val1);
System.Diagnostics.Debug.WriteLine(XmlDt.val2);
}
// XMLデータのファイル保存
private static void SaveXml()
{
StreamWriter sw = null;
try
{
// XMLファイルのPATH設定
String AppPath =
System.AppDomain.CurrentDomain.BaseDirectory;
String XmlPath = AppPath + XML_FIL;
// XMLデータ保存
sw = new StreamWriter(
XmlPath, false, Encoding.Default);
XmlSerializer serializer =
new XmlSerializer(typeof(XmlData));
serializer.Serialize(sw, XmlDt);
}
catch (Exception ex)
{
System.Diagnostics.Debug.Write(ex);
}
finally
{
if (sw != null) sw.Close();
}
}
// XMLデータのファイル読込
private static void ReadXml()
{
StreamReader sr = null;
try
{
// XMLファイルのPATH設定
String AppPath =
System.AppDomain.CurrentDomain.BaseDirectory;
String XmlPath = AppPath + XML_FIL;
if (File.Exists(XmlPath))
{
// XMLデータ読込
sr = new StreamReader(
XmlPath, Encoding.Default);
XmlSerializer serializer =
new XmlSerializer(typeof(XmlData));
XmlDt = (XmlData)(serializer.Deserialize(sr));
}
else
{
// XMLファイルが存在しない時は作成
SaveXml();
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.Write(ex);
}
finally
{
if (sr != null) sr.Close();
}
}
// -------------------------------------------------------