【案内】小説『エクストリームセンス』について

 小説『エクストリームセンス』は、本ブログを含めていくつか掲載していますが、PC、スマフォ、携帯のいずれでも読みやすいのは、「小説家になろう」サイトだと思います。縦書きのPDFをダウンロードすることもできます。

 小説『エクストリームセンス』のURLは、 http://ncode.syosetu.com/n7174bj/

2011年9月25日日曜日

簡単なソフトウェアを作ってみよう(4)


データの永続化にはXMLファイルを採用しました。下記DataAccessクラスは、XMLファイルに対するデータアクセスを提供するクラスです。

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
'データアクセス コンポーネント
‌ 
Imports System.Xml
‌ 
Public Class DataAccess
‌ 
    Private CurrentDirectory As String =
        System.IO.Directory.GetCurrentDirectory() & "\employee.xml"
    Private XMLDataFile As New XmlDocument
‌ 
    '==============
    'DataCreateメソッド
    Public Sub DataCreate(ByVal _employee As Employee)
        Dim oRoot As XmlNode =
            XMLDataFile.DocumentElement
        Dim oDocument As XmlElement =
            XMLDataFile.CreateElement("employee")
        Dim oID As XmlElement =
            XMLDataFile.CreateElement("id")
        Dim oName As XmlElement =
            XMLDataFile.CreateElement("name")
        Dim oBirthday As XmlElement =
            XMLDataFile.CreateElement("birthday")
        Dim oPostID As XmlElement =
            XMLDataFile.CreateElement("postid")
‌ 
        oID.InnerText = CType(_employee.ID, String)
        oName.InnerText = _employee.Name
        oBirthday.InnerText = CType(_employee.Birthday, String)
        oPostID.InnerText = CType(_employee.PostID, String)
‌ 
        With oDocument
            .AppendChild(oID)
            .AppendChild(oName)
            .AppendChild(oBirthday)
            .AppendChild(oPostID)
        End With
‌ 
        oRoot.AppendChild(oDocument)
        XMLDataFile.Save(CurrentDirectory)
    End Sub
‌ 
    '==============
    'DataUpdateメソッド
    Public Sub DataUpdate(ByVal Index As Integer,
                          ByVal TaegetEmployee As Employee)
        With XMLDataFile
            .SelectNodes("//name").Item(Index).InnerText =
                TaegetEmployee.Name
            .SelectNodes("//birthday").Item(Index).InnerText =
                CType(TaegetEmployee.Birthday, String)
            .SelectNodes("//postid").Item(Index).InnerText =
                CType(TaegetEmployee.PostID, String)
            .Save(CurrentDirectory)
        End With
    End Sub
‌ 
    '==============
    'DataDeleteメソッド
    Public Sub DataDelete(ByVal index As Integer)
        Dim TargetNode As XmlNode =
            XMLDataFile.SelectNodes("//root").Item(0)
        TargetNode.RemoveChild(TargetNode.ChildNodes(index))
        XMLDataFile.Save(CurrentDirectory)
    End Sub
‌ 
    '==============
    'FileLoadメソッド
    Public Sub FileLoad(ByVal list As System.Collections.IList)
        XMLDataFile.Load(CurrentDirectory)
        Dim nID As XmlNodeList =
            XMLDataFile.SelectNodes("//id")
        Dim nName As XmlNodeList =
            XMLDataFile.SelectNodes("//name")
        Dim nBirthday As XmlNodeList =
            XMLDataFile.SelectNodes("//birthday")
        Dim nPostID As XmlNodeList =
            XMLDataFile.SelectNodes("//postid")
‌ 
        Dim NodeIndex As Integer = 0
        For Each EmployeeNode In XMLDataFile.SelectNodes("//employee")
            Dim oEmployee As New Employee
            With oEmployee
                .ID = CType(nID(NodeIndex).InnerText, Integer)
                .Name = nName(NodeIndex).InnerText
                .Birthday = CType(nBirthday(NodeIndex).InnerText, Date)
                .PostID = CType(nPostID(NodeIndex).InnerText, Integer)
            End With
            list.Add(oEmployee)
            NodeIndex += 1
        Next
    End Sub
‌ 
    '==============
    'コンストラクタ
    Public Sub New()
        If System.IO.File.Exists(CurrentDirectory) = False Then
            Dim XMLFileFormat As String =
                "<?xml version=""1.0"" encoding=""utf-8""?><root></root>"
            System.IO.File.WriteAllText(CurrentDirectory, XMLFileFormat)
        End If
    End Sub
End Class

0 件のコメント:

コメントを投稿