Imports System
Imports System.Xml
Public Class Ini_Xml
Public Function StrLeerClave(strArchivo as String, strSeccion as String, strClave as String, strValorPorDefecto as String) as String
StrLeerClave = strValorPorDefecto
Dim doc As New XmlDocument()
doc.Load(strArchivo)
Dim root As XmlNode = doc.DocumentElement
Dim i, j As Integer
dim strSeccionActual as string
'Despliega el contenido de los nodos hijos
If root.HasChildNodes Then
' Exploración de secciones
For i = 0 To root.ChildNodes.Count - 1
Dim Secciones As XmlNode = root.ChildNodes(i)
strSeccionActual = Secciones.Name
If strSeccionActual = strSeccion then
' Si es la sección que están pidiendo en el argumento
If Secciones.HasChildNodes then
' Exploración de claves
For j = 0 To Secciones.ChildNodes.Count - 1
If Secciones.ChildNodes(j).Name = strClave then
StrLeerClave = Secciones.ChildNodes(j).InnerText
Exit Function
End If
Next j
else
'Secciones no tiene hijos
End if
End If
Next i
Else
'Root no tiene hijos
End If
End Function
Public Function blnEscribirClave(strArchivo as String, strSeccion as String, strClave as String, strValorAEscribir as String) as Boolean
' Esta función escribe en el nodo si ya existe,
' Hace falta implementar que no reciba espacios en blanco, control de errores
blnEscribirClave = False
Dim doc As New XmlDocument()
Try
doc.Load(strArchivo)
Catch ex as System.Io.FileNotFoundException
' Crear archivo con un solo nodo principal
blnCrearArchivo(strArchivo)
'Catch ex as System.Xml.XmlException
' Errores de XML
Finally
doc.Load(strArchivo)
End Try
Dim root As XmlNode = doc.DocumentElement
Dim i, j As Integer
Dim strSeccionActual as String
'Despliega el contenido de los nodos hijos
If root.HasChildNodes Then
' Exploración de secciones
For i = 0 To root.ChildNodes.Count - 1
Dim Secciones As XmlNode = root.ChildNodes(i)
strSeccionActual = Secciones.Name
If strSeccionActual = strSeccion Then
' Si es la sección que están pidiendo en el argumento
If Secciones.HasChildNodes Then
' Exploración de claves
For j = 0 To Secciones.ChildNodes.Count - 1
If Secciones.ChildNodes(j).Name = strClave Then
Secciones.ChildNodes(j).InnerText = strValorAEscribir
doc.Save(strArchivo)
blnEscribirClave = True
Exit Function
End If
Next j
' Si pasa por acá y la clave no coincide, cree una nueva clave
Dim OtraClave As XmlElement = doc.CreateElement(strClave)
' Asignar en el texto el Valor a escribir
OtraClave.InnerText = strValorAEscribir
' Añadir el nodo a la sección
Secciones.AppendChild(OtraClave)
'Clave no existe, creada
' Guardar el documento
doc.Save(StrArchivo)
blnEscribirClave = True
Exit Function
Else
' Secciones no tiene hijos
' Si pasa por acá y la clave no coincide, cree una nueva clave
Dim OtraClave As XmlElement = doc.CreateElement(strClave)
' Asignar en el texto el Valor a escribir
OtraClave.InnerText = strValorAEscribir
' Añadir el nodo a la sección
Secciones.AppendChild(OtraClave)
'Clave no existe, creada
' Guardar el documento
doc.Save(StrArchivo)
blnEscribirClave = True
Exit Function
End if
End if
Next i
' Si pasa por acá y la sección no coincide, cree una nueva sección
Dim seccion As XmlElement = doc.CreateElement(strSeccion)
' Añadir el nodo al documento
root.AppendChild(seccion)
' Crear el elemento de Clave
Dim Clave As XmlElement = doc.CreateElement(strClave)
' Asignar en el texto el Valor a escribir
Clave.InnerText = strValorAEscribir
' Añadir el nodo a la sección
seccion.AppendChild(Clave)
' Guardar el documento
doc.Save(StrArchivo)
blnEscribirClave = True
Exit Function
Else
' Root no tiene hijos, crearle un hijo
' Crear el elemento de Sección
Dim seccion As XmlElement = doc.CreateElement(strSeccion)
' Añadir el nodo al documento
root.AppendChild(seccion)
' Crear el elemento de Clave
Dim Clave As XmlElement = doc.CreateElement(strClave)
' Asignar en el texto el Valor a escribir
Clave.InnerText = strValorAEscribir
' Añadir el nodo a la sección
seccion.AppendChild(Clave)
' Guardar el documento
doc.Save(StrArchivo)
blnEscribirClave = True
Exit Function
End If
End Function
Public Function blnCrearArchivo(strArchivo as String) as Boolean
' Crear el XmlDocument.
Dim doc as XmlDocument = new XmlDocument()
Dim xmlData as string = "<principal></principal>"
doc.Load(new StringReader(xmlData))
doc.Save(strArchivo)
End Function
End Class