Información general sobre literales XML (Visual Basic)

Un literal XML permite incorporar XML directamente en el código de Visual Basic. La sintaxis de un literal XML representa objetos LINQ to XML y es similar a la sintaxis de XML 1.0. Esto facilita la creación de elementos XML y documentos mediante programación, ya que el código tiene la misma estructura que el XML final.

Visual Basic compila literales XML en objetos LINQ to XML. LINQ to XML proporciona un modelo de objetos sencillo para crear y manipular XML, y este modelo se integra bien con Language Integrated Query (LINQ). Para más información, consulte XElement.

Puede insertar una expresión de Visual Basic en un literal XML. En tiempo de ejecución, la aplicación crea un objeto LINQ to XML para cada literal, incorporando los valores de las expresiones insertadas. Esto permite especificar contenido dinámico dentro de un literal XML. Para obtener más información, vea Expresiones insertadas en XML.

Para obtener más información sobre las diferencias entre la sintaxis de los literales XML y la sintaxis de XML 1.0, vea Literales XML y la especificación XML 1.0.

Literales simples

Puede crear un objeto LINQ to XML en el código de Visual Basic si escribe o pega en XML válido. Un literal de elemento XML devuelve un objeto XElement. Para obtener más información, vea Literal de elemento XML y Literales XML y la especificación XML 1.0. En el ejemplo siguiente se crea un elemento XML que tiene varios elementos secundarios.

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

Puede crear un documento XML si inicia un literal XML con <?xml version="1.0"?>, como se muestra en el ejemplo siguiente. Un literal de documento XML devuelve un objeto XDocument. Para obtener más información, vea Literal de documento XML.

Dim contactDoc As XDocument = 
    <?xml version="1.0"?>
    <contact>
      <name>Patrick Hines</name>
      <phone type="home">206-555-0144</phone>
      <phone type="work">425-555-0145</phone>
    </contact>

Nota

La sintaxis de los literales XML de Visual Basic no es idéntica a la sintaxis de la especificación XML 1.0. Para obtener más información, vea Literales XML y la especificación XML 1.0.

Continuación de línea

Un literal XML puede abarcar varias líneas sin usar caracteres de continuación de línea (la secuencia espacio-subrayado-entrar). Esto facilita la comparación de literales XML del código con documentos XML.

El compilador trata los caracteres de continuación de línea como parte de un literal XML. Por lo tanto, debe usar la secuencia espacio-subrayado-entrar solo cuando pertenece al objeto LINQ to XML.

Pero necesita caracteres de continuación de línea si tiene una expresión de varias líneas en una expresión insertada. Para obtener más información, vea Expresiones insertadas en XML.

Inserción de consultas en literales XML

Puede usar una consulta en una expresión insertada. Al hacerlo, los elementos devueltos por la consulta se agregan al elemento XML. Esto permite agregar contenido dinámico, como el resultado de la consulta de un usuario, a un literal XML.

Por ejemplo, el código siguiente usa una consulta insertada para crear elementos XML a partir de los miembros de la matriz phoneNumbers2 y luego agregar esos elementos como elementos secundarios de contact2.

Public Class XmlSamples

  Public Sub Main()
    ' Initialize the objects. 

    Dim phoneNumbers2 As Phone() = { 
        New Phone("home", "206-555-0144"), 
        New Phone("work", "425-555-0145")}

    ' Convert the data contained in phoneNumbers2 to XML. 

    Dim contact2 = 
        <contact>
          <name>Patrick Hines</name>
          <%= From p In phoneNumbers2 
            Select <phone type=<%= p.Type %>><%= p.Number %></phone> 
          %>
        </contact>

    Console.WriteLine(contact2)
  End Sub

End Class

Class Phone
  Public Type As String
  Public Number As String
  Public Sub New(ByVal t As String, ByVal n As String)
    Type = t
    Number = n
  End Sub
End Class

Creación de objetos a partir de literales XML por parte del compilador

El compilador de Visual Basic traduce literales XML en llamadas a los constructores de LINQ to XML equivalentes para crear el objeto LINQ to XML. Por ejemplo, el compilador de Visual Basic traduce el siguiente ejemplo de código en una llamada al constructor XProcessingInstruction de la instrucción de versión XML, llama al constructor XElement de los elementos <contact>, <name> y <phone>, y llama al constructor XAttribute del atributo type. En concreto, dados los atributos del ejemplo siguiente, el compilador de Visual Basic llama al constructor XAttribute(XName, Object) dos veces. La primera vez pasa el valor type del parámetro name y el valor home del parámetro value. La segunda también pasa el valor type del parámetro name, pero el valor work del parámetro value.

Dim contactDoc As XDocument = 
    <?xml version="1.0"?>
    <contact>
      <name>Patrick Hines</name>
      <phone type="home">206-555-0144</phone>
      <phone type="work">425-555-0145</phone>
    </contact>

Consulte también