Literal de elemento XML
Actualización: noviembre 2007
Literal que representa un objeto XElement.
<name [ attributeList ] />
-or-
<name [ attributeList ] > [ elementContents ] </[ name ]>
Partes
<
Necesario. Abre la etiqueta del elemento de inicio.name
Necesario. Nombre del elemento. Tiene uno de los siguientes formatos:Texto literal del nombre del elemento, del formulario [ePrefix:]eName, donde:
Parte
Description
ePrefix
Opcional. Prefijo de espacio de nombres XML del elemento. Debe ser un espacio de nombres XML global que se define con una instrucción Imports en el archivo o en el nivel del proyecto; o bien, un espacio de nombres XML local que se define en este elemento o en un elemento primario.
eName
Necesario. Nombre del elemento. Tiene uno de los siguientes formatos:
Texto literal. Visite Nombres de atributos y elementos XML declarados.
Expresión incrustada con el formato <%= eNameExp %>. El tipo de eNameExp debe ser String o un tipo que sea implícitamente convertible a XName.
Expresión incrustada con el formato <%= nameExp %>. El tipo de nameExp debe ser String o un tipo que sea implícitamente convertible a XName. No se permite ninguna expresión incrustada en una etiqueta de cierre de un elemento.
attributeList
Opcional. Lista de atributos declarados en el literal.attribute [ attribute ... ]
Cada attribute tiene una de las sintaxis siguientes:
Asignación de atributo, con el formato [aPrefix:]aName=aValue, donde:
Parte
Description
aPrefix
Opcional. Prefijo de espacio de nombres XML del atributo. Debe ser un espacio de nombres XML global que se define con una instrucción Imports o un espacio de nombres XML local que se define en este elemento o un elemento primario.
aName
Necesario. Nombre del atributo. Tiene uno de los siguientes formatos:
Texto literal. Visite Nombres de atributos y elementos XML declarados.
Expresión incrustada con el formato <%= aNameExp %>. El tipo de aNameExp debe ser String o un tipo que sea implícitamente convertible a XName.
aValue
Opcional. Valor del atributo. Tiene uno de los siguientes formatos:
Texto literal, que va entre comillas.
Expresión incrustada con el formato <%= aValueExp %>. Se permite cualquier tipo.
Expresión incrustada con el formato <%= aExp %>.
/>
Opcional. Indica que el elemento es un elemento vacío, sin contenido.>
Necesario. Finaliza la etiqueta del elemento inicial o vacío.elementContents
Opcional. Contenido del elemento.content [ content ... ]
Cada content puede ser uno de los siguientes:
Texto literal. Todo el espacio en blanco de elementContents se convierte en significativo si hay texto literal.
Expresión incrustada con el formato <%= contentExp %>.
Literal de elemento XML.
Literal de comentario XML. Visite Literal de comentario XML.
Literal de instrucción de procesamiento XML. Visite Literal de instrucción de procesamiento XML.
Literal de CDATA XML. Visite Literal de CDATA XML.
</[name]>
Opcional. Representa la etiqueta de cierre del elemento. No se permite el parámetro name opcional cuando es el resultado de una expresión incrustada.
Valor devuelto
Un objeto XElement
Comentarios
Puede utilizar la sintaxis del literal de elemento XML para crear objetos XElement en el código.
Nota: |
---|
Un literal XML puede abarcar varias líneas sin usar caracteres de continuación de línea. Esta característica permite copiar el contenido de un documento XML y pegarlo directamente en un programa de Visual Basic. |
Las expresiones incrustadas con el formato <%= exp %> permiten agregar información dinámica a un literal de elemento XML. Para obtener más información, consulte Expresiones incrustadas en XML.
El compilador de Visual Basic convierte el literal del elemento XML en llamadas al constructor XElement y, si es necesario, al constructor XAttribute.
Espacios de nombres XML
Los prefijos de espacio de nombres XML son útiles cuando se deben crear literales XML con elementos desde el mismo espacio de nombres muchas veces en código. Puede utilizar los prefijos del espacio de nombres XML globales, que se definen utilizando la instrucción Imports o los prefijos locales, que se definen mediante la sintaxis de atributo xmlns:xmlPrefix= "xmlNamespace". Para obtener más información, consulte Instrucción Imports (Tipo y espacio de nombres de .NET).
De acuerdo con las reglas del ámbito para espacios de nombres XML, tienen prioridad los prefijos local sobre los globales. Sin embargo, si un literal XML define un espacio de nombres XML, ese espacio de nombres no está disponible para las expresiones que aparecen en una expresión incrustada. La expresión incrustada puede tener acceso a sólo el espacio de nombres XML global.
El compilador de Visual Basic convierte cada espacio de nombres XML global que usa un literal XML en una definición de espacio de nombres local en el código generado. Los espacios de nombres XML globales que no se usan no aparecen en el código generado.
Ejemplo
El ejemplo siguiente muestra cómo crear un elemento XML simple que tiene dos elementos vacíos anidados.
Dim test1 As XElement = _
<outer>
<inner1></inner1>
<inner2/>
</outer>
Console.WriteLine(test1)
El ejemplo muestra el texto siguiente. Observe que el literal conserva la estructura de los elementos vacíos.
<outer>
<inner1></inner1>
<inner2 />
</outer>
El ejemplo siguiente muestra cómo utilizar las expresiones incrustadas para asignar un nombre a un elemento y crear atributos.
Dim elementType As String = "book"
Dim attributeName1 As String = "year"
Dim attributeValue1 As Integer = 1999
Dim attributeName2 As String = "title"
Dim attributeValue2 As String = "My Book"
Dim book As XElement = _
<<%= elementType %>
isbn="1234"
<%= attributeName1 %>=<%= attributeValue1 %>
<%= New XAttribute(attributeName2, attributeValue2) %>
/>
Console.WriteLine(book)
Este código muestra el texto siguiente:
<book isbn="1234" year="1999" title="My Book" />
En el ejemplo siguiente se declara ns como prefijo de espacio de nombres XML. Después usa el prefijo del espacio de nombres para crear un literal XML y muestra el formato final del elemento.
' Place Imports statements at the top of your program.
Imports <xmlns:ns="http://SomeNamespace">
Class TestClass1
Shared Sub TestPrefix()
' Create test using a global XML namespace prefix.
Dim inner2 = <ns:inner2/>
Dim test = _
<ns:outer>
<ns:middle xmlns:ns="http://NewNamespace">
<ns:inner1/>
<%= inner2 %>
</ns:middle>
</ns:outer>
' Display test to see its final form.
Console.WriteLine(test)
End Sub
End Class
Este código muestra el texto siguiente:
<ns:outer xmlns:ns="http://SomeNamespace">
<ns:middle xmlns:ns="http://NewNamespace">
<ns:inner1 />
<inner2 xmlns="http://SomeNamespace" />
</ns:middle>
</ns:outer>
Observe que el compilador convirtió el prefijo del espacio de nombres XML global en una definición de prefijo del espacio de nombres XML. El elemento <ns:middle> vuelve a definir el prefijo del espacio de nombres XML para el elemento <ns:inner1>. Sin embargo, el elemento < ns:inner2 > usa el espacio de nombres definido por la instrucción Imports.
Vea también
Conceptos
Nombres de atributos y elementos XML declarados
Expresiones incrustadas en XML
Referencia
Instrucción Imports (Tipo y espacio de nombres de .NET)