145 lines
5.3 KiB
VB.net
145 lines
5.3 KiB
VB.net
Imports System.Xml
|
|
|
|
Public Class ArinXML
|
|
Private File As String
|
|
Private vDocu As XmlDocument = Nothing
|
|
Private nsmgr As XmlNamespaceManager
|
|
Public Root As XmlElement
|
|
|
|
Public ReadOnly Property Docu() As XmlDocument
|
|
Get
|
|
Return Me.vDocu
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property Filename As String
|
|
Get
|
|
Return Me.File
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub New(ByVal Filename As String)
|
|
Me.File = Filename
|
|
If Exist() Then '//파일이 존재하면 도큐먼트반환
|
|
Me.vDocu = New XmlDocument
|
|
nsmgr = New XmlNamespaceManager(New Xml.NameTable)
|
|
nsmgr.AddNamespace("x", "http://tindevil.com")
|
|
Try
|
|
Me.vDocu.Load(Filename)
|
|
Root = vDocu.DocumentElement
|
|
Catch ex As Exception
|
|
Me.vDocu = Nothing
|
|
Me.Root = Nothing
|
|
End Try
|
|
End If
|
|
End Sub
|
|
|
|
Public Sub New(ByVal docu As Xml.XmlDocument)
|
|
Me.vDocu = docu
|
|
Me.File = My.Application.Info.DirectoryPath & "\temp.xml"
|
|
nsmgr = New XmlNamespaceManager(New Xml.NameTable)
|
|
nsmgr.AddNamespace("x", "http://tindevil.com")
|
|
Root = vDocu.DocumentElement
|
|
End Sub
|
|
|
|
''' <summary>
|
|
''' 파일존재여부
|
|
''' </summary>
|
|
''' <returns></returns>
|
|
''' <remarks></remarks>
|
|
Public Function Exist() As Boolean
|
|
If Not vDocu Is Nothing Then Return True
|
|
Return System.IO.File.Exists(Me.File)
|
|
End Function
|
|
|
|
|
|
Public Sub CreateFile()
|
|
'//주어진파일명으로 기본파일을 생성한다.
|
|
Dim NewXml As New System.Text.StringBuilder
|
|
NewXml.AppendLine("<?xml version='1.0' encoding='KSC5601'?>")
|
|
NewXml.AppendLine("<tindevil xmlns='http://tindevil.com'> ")
|
|
NewXml.AppendLine("</tindevil>")
|
|
If System.IO.File.Exists(Me.File) Then System.IO.File.Delete(Me.File)
|
|
My.Computer.FileSystem.WriteAllText(Me.File, NewXml.ToString.Replace("'", Chr(&H22)), False)
|
|
Me.vDocu = New XmlDocument
|
|
Me.vDocu.Load(Me.File)
|
|
nsmgr = New XmlNamespaceManager(New Xml.NameTable)
|
|
nsmgr.AddNamespace("x", "http://tindevil.com")
|
|
Root = vDocu.DocumentElement
|
|
End Sub
|
|
|
|
Public Function Read(ByVal appkey As String, ByVal subkey As String, Optional ByVal defaltvalue As String = "", Optional ByVal Nullvalue As String = "") As String '//변수초기화
|
|
'//파일이없을경우 빈값을 반환합니다.
|
|
If Exist() = False Then Return ""
|
|
Dim L As XmlElement = Me.Root.SelectSingleNode(appkey, nsmgr) '//appkey를 먼저 조회한다.
|
|
If L Is Nothing Then Return ""
|
|
Dim C As XmlElement = L.SelectSingleNode(subkey, nsmgr)
|
|
If C Is Nothing Then Return ""
|
|
Return C.InnerText
|
|
End Function
|
|
|
|
Public Function Get_NameSpace() As XmlNamespaceManager
|
|
Return Me.nsmgr
|
|
End Function
|
|
Public Function NS() As XmlNamespaceManager
|
|
Return Me.nsmgr
|
|
End Function
|
|
|
|
Public Function CreateElement(ByVal name As String) As XmlElement
|
|
Return Me.Docu.CreateElement(name, Me.NS.DefaultNamespace)
|
|
End Function
|
|
Public Function GetNode(ByVal appkey As String) As XmlElement
|
|
'//파일이없을경우 빈값을 반환합니다.
|
|
If Docu Is Nothing Then Return Nothing
|
|
Return Me.Root.SelectSingleNode(appkey, nsmgr) '//appkey를 먼저 조회한다.
|
|
End Function
|
|
Public Function GetNodes(ByVal appkey As String) As Xml.XmlNodeList
|
|
'//파일이없을경우 빈값을 반환합니다.
|
|
If Docu Is Nothing Then Return Nothing
|
|
Dim L As XmlNodeList = Me.Root.SelectNodes(appkey, nsmgr) '//appkey를 먼저 조회한다.
|
|
Return L
|
|
End Function
|
|
|
|
Public Property Data(ByVal appkey As String, ByVal subkey As String, Optional ByVal defaltvalue As Object = "", Optional ByVal trim As Boolean = False) As String
|
|
Get
|
|
'//파일이없을경우 빈값을 반환합니다.
|
|
If Exist() = False Then Return defaltvalue
|
|
Dim L As XmlElement = Me.Root.SelectSingleNode(appkey, nsmgr) '//appkey를 먼저 조회한다.
|
|
If L Is Nothing Then Return defaltvalue
|
|
Dim C As XmlElement = L.SelectSingleNode(subkey, nsmgr)
|
|
If C Is Nothing Then Return defaltvalue
|
|
If trim Then
|
|
Return C.InnerText.Trim
|
|
Else
|
|
Return C.InnerText
|
|
End If
|
|
|
|
End Get
|
|
Set(ByVal value As String)
|
|
'//파일이없을경우 빈값을 반환합니다.
|
|
|
|
If Exist() = False Then Return
|
|
Dim L As XmlElement = Me.Root.SelectSingleNode(appkey, nsmgr) '//appkey를 먼저 조회한다.
|
|
If L Is Nothing Then '//만들어야한다.
|
|
L = Me.Docu.CreateElement(appkey)
|
|
Me.Root.AppendChild(L)
|
|
End If
|
|
Dim C As XmlElement = L.SelectSingleNode(subkey, nsmgr)
|
|
If C Is Nothing Then '//만들어야한다.
|
|
C = Me.Docu.CreateElement(subkey)
|
|
C.InnerText = value
|
|
L.AppendChild(C)
|
|
Else
|
|
C.InnerText = value
|
|
End If
|
|
Me.Docu.Save(Me.File)
|
|
'MsgBox(value)
|
|
End Set
|
|
End Property
|
|
|
|
Public Sub Save()
|
|
Me.Docu.Save(Me.File)
|
|
End Sub
|
|
|
|
End Class
|