Información general sobre LINQ to XML en Visual Basic

Visual Basic proporciona compatibilidad para LINQ to XML a través de literales XML y propiedades del eje XML. Esto le permite usar una sintaxis familiar y cómoda para trabajar con XML en el código de Visual Basic. Los literales XML te permiten escribir XML directamente en el código. Las propiedades del eje XML permiten acceder a nodos secundarios, nodos descendientes y atributos de un literal XML. Para obtener más información, consulta Información general sobre literales XML y acceso a XML en Visual Basic.

LINQ to XML es una API de programación XML en memoria diseñada específicamente para aprovechar Language-Integrated Query (LINQ). Aunque puede llamar directamente a las API de LINQ, solo Visual Basic te permite declarar literales XML y acceder directamente a las propiedades del eje XML.

Nota

Los literales XML y las propiedades del eje XML no se admiten en código declarativo en una página de ASP.NET. Para usar las características XML de Visual Basic, coloca el código en una página de código subyacente en la aplicación de ASP.NET.

Play button Para ver demostraciones de vídeo relacionadas, consulte ¿Cómo puedo empezar a trabajar con LINQ to XML? y ¿Cómo puedo crear hojas de cálculo de Excel con LINQ to XML?.

Creación de XML

Hay dos maneras de crear árboles XML en Visual Basic. Puede declarar un literal XML directamente en el código o puede usar las API de LINQ para crear el árbol. Ambos procesos permiten que el código refleje la estructura final del árbol XML. Por ejemplo, en el ejemplo de código siguiente se crea un elemento XML:

Dim contact1 As XElement = 
    <contact>
      <name>Patrick Hines</name>
      <phone type="home">206-555-0144</phone>
      <phone type="work">425-555-0145</phone>
    </contact>

Para obtener más información, consulte Crear XML en Visual Basic.

Acceso y navegación por XML

Visual Basic proporciona propiedades del eje XML para acceder a estructuras XML y navegar por ellas. Estas propiedades permiten acceder a los elementos y atributos XML especificando los nombres de elementos secundarios XML. Como alternativa, puede llamar explícitamente a los métodos LINQ para navegar y buscar elementos y atributos. Por ejemplo, en el ejemplo de código siguiente se usan propiedades del eje XML para hacer referencia a los atributos y elementos secundarios de un elemento XML. En el ejemplo de código se usa una consulta LINQ para recuperar elementos secundarios y generarlos como elementos XML, realizando una transformación de forma eficaz.

' Place Imports statements at the top of your program.
Imports <xmlns:ns="http://SomeNamespace">

Module Sample1

    Sub SampleTransform()

        ' Create test by using a global XML namespace prefix.

        Dim contact =
            <ns:contact>
                <ns:name>Patrick Hines</ns:name>
                <ns:phone ns:type="home">206-555-0144</ns:phone>
                <ns:phone ns:type="work">425-555-0145</ns:phone>
            </ns:contact>

        Dim phoneTypes =
          <phoneTypes>
              <%= From phone In contact.<ns:phone>
                  Select <type><%= phone.@ns:type %></type>
              %>
          </phoneTypes>

        Console.WriteLine(phoneTypes)
    End Sub

End Module

Para obtener más información, consulte Acceder a XML en Visual Basic.

Espacios de nombres XML

Visual Basic permite especificar un alias en un espacio de nombres XML global mediante la instrucciónImports. En el ejemplo siguiente se muestra cómo usar la instrucción Imports para importar un espacio de nombres XML:

Imports <xmlns:ns="http://someNamespace">

Puede usar un alias de espacio de nombres XML al obtener acceso a las propiedades del eje XML y declarar literales XML para documentos y elementos XML.

Puede recuperar un XNamespace objeto para un prefijo de espacio de nombres determinado mediante el operador GetXmlNamespace.

Para más información, consulte Imports (Instrucción, Espacio de nombres XML).

Usar espacios de nombres XML en literales XML

En el ejemplo siguiente se muestra cómo crear un XElement objeto que usa el espacio de nombres globalns:

Dim contact1 As XElement = 
    <ns:contact>
        <ns:name>Patrick Hines</ns:name>
        <ns:phone type="home">206-555-0144</ns:phone>
        <ns:phone type="work">425-555-0145</ns:phone>
    </ns:contact>

Console.WriteLine(contact1)

El compilador de Visual Basic traduce literales XML que contienen alias de espacio de nombres XML en código equivalente que usa la notación XML para usar espacios de nombres XML, con el atributoxmlns. Cuando se compila, el código del ejemplo de la sección anterior genera básicamente el mismo código ejecutable que el ejemplo siguiente:

Dim contact2 As XElement = 
    <ns1:contact xmlns:ns1="http://someNamespace">
        <ns1:name>Patrick Hines</ns1:name>
        <ns1:phone type="home">206-555-0144</ns1:phone>
        <ns1:phone type="work">425-555-0145</ns1:phone>
    </ns1:contact>

Console.WriteLine(contact2)

Uso de espacios de nombres XML en propiedades del eje XML

Los espacios de nombres XML declarados en literales XML no están disponibles para su uso en las propiedades del eje XML. Sin embargo, los espacios de nombres globales se pueden usar con las propiedades del eje XML. Use dos puntos para separar el prefijo del espacio de nombres XML del nombre del elemento local. El siguiente es un ejemplo:

Console.WriteLine("Contact name is: " & contact1.<ns:name>.Value)

Consulte también