Imports System.Xml
Module ModCadenasConexionesXml
'Gestionar fichero xml que almacena en este caso cadenas de conexion
'Leer, Grabar, Editar y Eliminar valores de cadenas de conexion
'
'Ejemplo fichero:
'<?xml version="1.0" encoding="utf-8"?>
'<CadenasConexiones>
' <CadenaConexion ID = "1" >
' <Valor>Server=.\SQLEXPRESS;Database=PRUEBAS;Trusted_Connection=True;</Valor>
' </CadenaConexion>
' <CadenaConexion ID = "2" >
' <Valor>Server=.\SQLEXPRESS;Database=PRUEBAS2;Trusted_Connection=True;</Valor>
' </CadenaConexion>
'</CadenasConexiones>
Const PATHFICHERO = ".\CadenasConexion.xml"
Const NOMBRERAIZ = "CadenasConexiones"
Const NOMBRENODO = "CadenaConexion"
Const NOMBREATRIBUTONODO1 = "ID"
Const NOMBREVALORNODO1 = "Valor"
Public Class clsCadenaConexion
Public _ID As String
Public _Valor As String
Public Sub New()
Me._ID = ""
Me._Valor = ""
End Sub
Public Sub New(DescConexion As String, CadConexion As String)
Me._ID = DescConexion
Me._Valor = CadConexion
End Sub
Public Function GrabarCadenaConexionXml() As Boolean
Try
If Not File.Exists(PATHFICHERO) Then
'Crear XmlWriterSttings.
Dim settings As XmlWriterSettings = New XmlWriterSettings()
settings.Indent = True
'Crear XmlWriter
Dim writer As XmlWriter
writer = XmlWriter.Create(PATHFICHERO, settings)
'Inicio escritura documento xml
writer.WriteStartDocument()
writer.WriteStartElement(NOMBRERAIZ) ' Raíz.
'Grabar nodo
writer.WriteStartElement(NOMBRENODO)
writer.WriteAttributeString(NOMBREATRIBUTONODO1, Me._ID)
writer.WriteElementString(NOMBREVALORNODO1, Me._Valor)
'Fin grabar nodo
writer.WriteEndElement()
'Fin escritura documento xml
writer.WriteEndElement()
writer.Close()
Else
ActualizarGrabarNodo()
End If
Return True
Catch ex As Exception
Debug.Print(ex.Message)
Return False
End Try
End Function
Private Function ActualizarGrabarNodo() As Boolean
Dim resb As Boolean = False
Try
'Cargar fichero xml
Dim xd As New XmlDocument
xd.Load(PATHFICHERO)
'Buscar NODO por el atributo ID
For Each e As XmlElement In xd.GetElementsByTagName(NOMBRENODO)
resb = (Me._ID = e.GetAttribute(NOMBREATRIBUTONODO1))
If resb Then
'ID encontrado. Actualizar valor
e.Item(NOMBREVALORNODO1).InnerText = Me._Valor
xd.Save(PATHFICHERO)
Exit For
End If
Next e
If Not resb Then
'ID no encontrado. Grabar nuevo valor
'Creamos nuevo nodo con sus atributos y elementos
Dim nCadCon As XmlElement = xd.CreateElement(NOMBRENODO)
nCadCon.SetAttribute(NOMBREATRIBUTONODO1, Me._ID)
Dim nValor As XmlElement = xd.CreateElement(NOMBREVALORNODO1)
nValor.InnerText = Me._Valor
nCadCon.AppendChild(nValor)
'Añadir nuevo nodo al xml y grabar los cambios al fichero
xd.DocumentElement.AppendChild(nCadCon)
xd.Save(PATHFICHERO)
resb = True
End If
Return resb
Catch ex As Exception
Debug.Print(ex.Message)
Return False
End Try
End Function
Public Function EliminarCadenaConexionXml() As Boolean
Dim resb As Boolean = False
Try
'Cargar fichero xml
Dim xd As New XmlDocument
xd.Load(PATHFICHERO)
'Buscar NODO por ID
For Each e As XmlElement In xd.GetElementsByTagName(NOMBRENODO)
resb = (Me._ID = e.GetAttribute(NOMBREATRIBUTONODO1))
If resb Then
'ID encontrado. Eliminar NODO
'obtenemos el nodo del elemento
Dim xn As XmlNode = e
'obtenemos la raiz e indicamos borrar el nodo
xn.ParentNode.RemoveChild(xn)
'grabamos los cambios en el fichero xml
xd.Save(PATHFICHERO)
Exit For
End If
Next e
Return resb
Catch ex As Exception
Debug.Print(ex.Message)
Return False
End Try
End Function
Public Function LeerCadenasConexionesXml() As DataSet
Try
Dim ds As New DataSet
ds.Tables().Add(NOMBRERAIZ)
ds.Tables(NOMBRERAIZ).Columns.Add(NOMBREATRIBUTONODO1)
ds.Tables(NOMBRERAIZ).Columns.Add(NOMBREVALORNODO1)
Dim xd As New XmlDocument
xd.Load(PATHFICHERO)
For Each e As XmlElement In xd.GetElementsByTagName(NOMBRENODO)
Dim dr As DataRow
dr = ds.Tables(NOMBRERAIZ).Rows.Add
dr(NOMBREATRIBUTONODO1) = e.GetAttribute(NOMBREATRIBUTONODO1)
dr(NOMBREVALORNODO1) = e.Item(NOMBREVALORNODO1).InnerText
dr.AcceptChanges()
Next e
Return ds
Catch ex As Exception
Debug.Print(ex.Message)
Return Nothing
End Try
End Function
End Class
End Module
No hay comentarios:
Publicar un comentario