Información general sobre LINQ to XML en Visual Basic
Actualización: noviembre 2007
Visual Basic proporciona compatibilidad para LINQ to XML a través de literales XML y propiedades de eje XML. Esto permite utilizar una sintaxis familiar y adecuada para trabajar con XML en el código de Visual Basic. Los literales XML permiten incluir directamente XML en el código. Las propiedades de eje XML permiten tener acceso a los nodos secundarios, los nodos descendientes y los atributos de un literal XML. Para obtener más información, consulte Información general sobre literales XML y Obtener acceso a XML en Visual Basic.
LINQ to XML es una API de programación XML en memoria diseñada específicamente para aprovechar las funcionalidades de Language-Integrated Query (LINQ). Aunque puede llamar a las API de LINQ directamente, sólo Visual Basic permite declarar literales XML y tener acceso directamente a las propiedades de eje XML.
Nota: |
---|
Los literales XML y las propiedades de eje XML no se admiten en el código declarativo de una página ASP.NET. Para utilizar las características de XML de Visual Basic, coloque el código en una página de código subyacente en la aplicación ASP.NET. |
Crear XML
Hay dos maneras de crear árboles XML en Visual Basic. Puede declarar un literal XML directamente en código o puede utilizar la API de LINQ para crearlo. Ambos procesos permiten que el código refleje la estructura final del árbol XML. Por ejemplo, el siguiente ejemplo de código 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.
Navegar y obtener acceso a XML
Visual Basic proporciona propiedades de eje XML para obtener acceso y navegar por las estructuras XML. Estas propiedades permiten tener acceso a los elementos y atributos XML especificando los nombres de los elementos secundarios XML. O bien, puede llamar explícitamente a los métodos de LINQ para navegar y buscar elementos y atributos. Por ejemplo, el ejemplo de código siguiente utiliza propiedades de eje XML para hacer referencia a los atributos y elementos secundarios de un elemento XML. El ejemplo de código usa una consulta LINQ para recuperar los elementos secundarios y generarlos como elementos XML, realizando eficazmente una transformación.
' 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 Obtener acceso a XML en Visual Basic.
Espacios de nombres XML
Visual Basic permite especificar un alias en un espacio de nombres XML global utilizando la instrucción Imports. El ejemplo siguiente muestra cómo utilizar la instrucción Imports para importar un espacio de nombres XML:
Imports <xmlns:ns="http://someNamespace">
Puede utilizar un alias de espacio de nombres XML al obtener acceso a las propiedades de eje XML y declarar literales XML para los documentos y elementos XML.
Puede recuperar un objeto XNamespace de un prefijo de espacio de nombres concreto mediante GetXmlNamespace (Operador).
Para obtener más información, consulte Imports (Instrucción, Espacio de nombres XML).
Utilizar espacios de nombres XML en literales XML
El ejemplo siguiente muestra cómo crear un objeto XElement que utiliza el espacio de nombres nsglobal:
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 los alias del espacio de nombres XML en código equivalente que utiliza la notación XML para usar los espacios de nombres XML, con el atributo xmlns. 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)
Usar los espacios de nombres XML en propiedades de eje XML
Los espacios de nombres XML declarados en literales XML no están disponibles para su uso en propiedades de eje XML. Sin embargo, los espacios de nombres globales se pueden utilizar con las propiedades de eje XML. Use dos puntos para separar el prefijo del espacio de nombres XML del nombre del elemento local. A continuación, se muestra un ejemplo:
Console.WriteLine("Contact name is: " & contact1.<ns:name>.Value)