Enreas
Advertisement

Documento XML[]

<?xml version="1.0" encoding="iso-8859-15"?>
<pelicula titulo="Brazil" estreno="1985" minutos="142">
  <direccion>
    <director nombre="Terry" apellidos="Gilliam"/>
  </direccion>
  <produccion>
    <productor nombre="Patrick" apellidos="Cassavetti"/>
    <productor nombre="Arnon" apellidos="Milchan"/>
  </produccion>
  <guion>
    <guionista nombre="Terry" apellidos="Gilliam"/>
    <guionista nombre="Tom" apellidos="Stoppard"/>
    <guionista nombre="Charles" apellidos="McKeown"/>
  </guion>
  <reparto>
    <interprete nombre="Jonathan" apellidos="Pryce"
      papel="protagonista">Jonathan Pryce</interprete>
    <interprete nombre="Robert" apellidos="De Niro"
      papel="protagonista">Robert De Niro</interprete>
    <interprete nombre="Kim" apellidos="Greist"
      papel="protagonista">Kim Greist</interprete>
    <interprete nombre="Michael" apellidos="Palin"
      papel="secundario">Michael Palin</interprete>
    <interprete nombre="Ian" apellidos="Holm"
      papel="secundario">Ian Holm</interprete>
    <interprete nombre="Bob" apellidos="Hoskins"
      papel="secundario">Bob Hoskins</interprete>
  </reparto>
</pelicula>

Apertura de documentos XML[]

Option Explicit On

Imports System.Xml

Module Module1

  Sub Main()

    Dim xmlPelicula As New XmlDocument
    xmlPelicula.Load( _
      "C:\Users\Juan Diego\Documents\brazil.xml" _
    )

    Console.WriteLine(xmlPelicula.InnerXml)
    Console.WriteLine("Pulse Intro para continuar.")
    Console.ReadLine()

  End Sub

End Module

Acceso a componentes[]

Option Explicit On

Imports System.Xml

Module Module1

  Sub Main()

    Dim xmlPelicula As New XmlDocument
    xmlPelicula.Load( _
      "C:\Users\Juan Diego\Documents\brazil.xml" _
    )

    Dim xmlInterpretes As XmlNodeList
    xmlInterpretes = xmlPelicula.SelectNodes( _
      "/pelicula/reparto/interprete" _
    )

    Dim xmlInterprete As XmlNode
    For Each xmlInterprete In xmlInterpretes
      Console.WriteLine(xmlInterprete.InnerXml)
    Next

    Console.WriteLine("Pulse Intro para continuar.")
    Console.ReadLine()

  End Sub

End Module

Acceso a atributos[]

Option Explicit On

Imports System.Xml

Module Module1

  Sub Main()

    Dim xmlPelicula As New XmlDocument
    xmlPelicula.Load( _
      "C:\Users\Juan Diego\Documents\brazil.xml" _
    )

    Dim xmlInterpretes As XmlNodeList
    xmlInterpretes = xmlPelicula.SelectNodes( _
      "/pelicula/reparto/interprete" _
    )

    Dim xmlInterprete As XmlNode
    For Each xmlInterprete In xmlInterpretes
      Console.WriteLine(xmlInterprete.InnerXml)

      Dim xmlAtributo As XmlAttribute
      For Each xmlAtributo In xmlInterprete.Attributes
        Console.WriteLine( _
          "  " & _
          xmlAtributo.Name & ": " & _
          xmlAtributo.Value _
        )
      Next
    Next

    Console.WriteLine("Pulse Intro para continuar.")
    Console.ReadLine()

  End Sub

End Module

Acceso a nodos descendientes[]

Option Explicit On

Imports System.Xml

Module Module1

  Sub Main()

    Dim xmlPelicula As New XmlDocument
    xmlPelicula.Load( _
      "C:\Users\Juan Diego\Documents\brazil.xml" _
    )

    RecorrerNodos(xmlPelicula.DocumentElement)

    Console.WriteLine()
    Console.WriteLine("Pulse Intro para continuar.")
    Console.ReadLine()

  End Sub

  Private Sub RecorrerNodos( _
    ByVal Nodo As XmlNode, _
    Optional ByVal Nivel As Byte = 0 _
  )

    Dim i As Byte
    For i = 1 To Nivel
      Console.Write("  ")
    Next
    Console.WriteLine(Nodo.Name)
    Nivel += 1

    Dim nodoHijo As XmlNode
    For Each nodoHijo In Nodo.ChildNodes
      If nodoHijo.NodeType <> XmlNodeType.Text Then
        RecorrerNodos(nodoHijo, Nivel)
      End If
    Next

  End Sub

End Module

Acceso a nodos hermanos[]

Option Explicit On

Imports System.Xml

Module Module1

  Sub Main()

    Dim xmlPelicula As New XmlDocument
    xmlPelicula.Load( _
      "C:\Users\Juan Diego\Documents\brazil.xml" _
    )

    Dim nodoInterprete As XmlNode
    nodoInterprete = xmlPelicula.SelectSingleNode( _
      "/pelicula/reparto/interprete" _
    )

    Dim nodoHermano As XmlNode
    nodoHermano = nodoInterprete.NextSibling

    Do While Not IsNothing(nodoHermano)
      Console.WriteLine(nodoHermano.InnerXml)
      nodoHermano = nodoHermano.NextSibling
    Loop

    Console.WriteLine()
    Console.WriteLine("Pulse Intro para continuar.")
    Console.ReadLine()

  End Sub

End Module

Realizar cambios[]

Option Explicit On

Imports System.Xml

Module Module1

  Sub Main()

    Dim xmlPelicula As New XmlDocument
    xmlPelicula.Load( _
      "C:\Users\Juan Diego\Documents\brazil.xml" _
    )

    Dim nodoInterprete As XmlNode
    nodoInterprete = xmlPelicula.SelectSingleNode( _
      "/pelicula/reparto/interprete" _
    )

    Dim nodoHermano As XmlNode
    nodoHermano = nodoInterprete

    Do While Not IsNothing(nodoHermano)
      Console.WriteLine(nodoHermano.InnerXml)
      nodoHermano.InnerXml = ""
      nodoHermano = nodoHermano.NextSibling
    Loop

    Console.WriteLine(xmlPelicula.InnerXml)
    Console.WriteLine()
    Console.WriteLine("Pulse Intro para continuar.")
    Console.ReadLine()

    xmlPelicula.Save( _
      "C:\Users\Juan Diego\Documents\brazil2.xml" _
    )

  End Sub

End Module

Creación desde cero[]

Option Explicit On

Imports System.Xml

Module Module1

  Sub Main()

    Dim xmlPelicula As New XmlDocument

    Dim xmlPrologo As XmlDeclaration
    xmlPrologo = xmlPelicula.CreateXmlDeclaration( _
      "1.0", Nothing, Nothing _
    )

    Dim nodoPelicula As XmlNode
    nodoPelicula = xmlPelicula.CreateNode( _
      XmlNodeType.Element, "pelicula", "" _
    )
    nodoPelicula.InnerText = "Brazil"

    Dim nodoDirector As XmlNode
    nodoDirector = xmlPelicula.CreateNode( _
      XmlNodeType.Element, "director", "" _
    )
    nodoDirector.InnerText = "Terry Gilliam"

    Dim nodoActores As XmlNode
    nodoActores = xmlPelicula.CreateNode( _
      XmlNodeType.Element, "actores", "" _
    )

    Dim nodoActor As XmlNode
    nodoActor = xmlPelicula.CreateNode( _
      XmlNodeType.Element, "actor", "" _
    )
    nodoActor.InnerText = "Jonathan Pryce"

    Dim atributoPapel As XmlAttribute
    atributoPapel = xmlPelicula.CreateAttribute("papel")
    atributoPapel.Value = "protagonista"

    nodoActor.Attributes.Append(atributoPapel)
    nodoActores.AppendChild(nodoActor)

    nodoPelicula.AppendChild(nodoDirector)
    nodoPelicula.AppendChild(nodoActores)

    xmlPelicula.AppendChild(xmlPrologo)
    xmlPelicula.AppendChild(nodoPelicula)

    xmlPelicula.Save("C:\Users\Juan Diego\Documents\brazil.xml")

  End Sub

End Module
Advertisement