Literał elementu XML (Visual Basic)
Literał reprezentujący XElement obiekt.
Składnia
<name [ attributeList ] />
-or-
<name [ attributeList ] > [ elementContents ] </[ name ]>
generatora
<
Wymagany. Otwiera tag elementu początkowego.
name
Wymagany. Nazwa elementu. Format jest jednym z następujących elementów:
Tekst literału dla nazwy elementu formularza
[ePrefix:]eName
, gdzie:Element opis ePrefix
Opcjonalny. Prefiks przestrzeni nazw XML dla elementu. Musi być globalną przestrzenią nazw XML zdefiniowaną za Imports
pomocą instrukcji w pliku lub na poziomie projektu albo lokalną przestrzenią nazw XML zdefiniowaną w tym elemecie lub elemercie nadrzędnym.eName
Wymagany. Nazwa elementu. Format jest jednym z następujących elementów:
- Tekst literału. Zobacz Nazwy zadeklarowanych elementów XML i atrybutów.
- Osadzone wyrażenie formularza<%= eNameExp %>
. TypeNameExp
musi miećString
typ lub typ niejawnie konwertowany na XName.Osadzone wyrażenie formularza
<%= nameExp %>
. TypnameExp
musi byćString
lub typ niejawnie konwertowany na XName. Wyrażenie osadzone nie jest dozwolone w tagu zamykającym elementu.
attributeList
Opcjonalny. Lista atrybutów zadeklarowanych w literału.
attribute [ attribute ... ]
Każda
attribute
z nich ma jedną z następujących składni:Przypisanie atrybutu formularza
[aPrefix:]aName=aValue
, gdzie:Element opis aPrefix
Opcjonalny. Prefiks przestrzeni nazw XML dla atrybutu. Musi być globalną przestrzenią nazw XML zdefiniowaną za Imports
pomocą instrukcji lub lokalną przestrzenią nazw XML zdefiniowaną w tym elemecie lub elemercie nadrzędnym.aName
Wymagany. Nazwa atrybutu. Format jest jednym z następujących elementów:
- Tekst literału. Zobacz Nazwy zadeklarowanych elementów XML i atrybutów.
- Osadzone wyrażenie formularza<%= aNameExp %>
. TypaNameExp
musi miećString
typ lub typ niejawnie konwertowany na XName.aValue
Opcjonalny. Wartość atrybutu. Format jest jednym z następujących elementów:
- Tekst literału, ujęty w znaki cudzysłowu.
- Osadzone wyrażenie formularza<%= aValueExp %>
. Dowolny typ jest dozwolony.Osadzone wyrażenie formularza
<%= aExp %>
.
/>
Opcjonalny. Wskazuje, że element jest pustym elementem bez zawartości.
>
Wymagany. Kończy tag początku lub pustego elementu.
elementContents
Opcjonalny. Zawartość elementu.
content [ content ... ]
Każdy
content
z nich może być jednym z następujących elementów:Tekst literału. Wszystkie białe znaki w
elementContents
obiekcie stają się znaczące, jeśli istnieje jakikolwiek tekst literału.Osadzone wyrażenie formularza
<%= contentExp %>
.Literał elementu XML.
Literał komentarza XML. Zobacz Literał komentarza XML.
Literał instrukcji przetwarzania XML. Zobacz Literał instrukcji przetwarzania XML.
Literał CDATA XML. Zobacz Literał CDATA XML.
</[name]>
Opcjonalny. Reprezentuje tag zamykający elementu. Opcjonalny
name
parametr nie jest dozwolony, gdy jest wynikiem wyrażenia osadzonego.
Wartość zwracana
Obiekt XElement.
Uwagi
Składnia literału elementu XML umożliwia tworzenie XElement obiektów w kodzie.
Uwaga
Literał XML może obejmować wiele wierszy bez używania znaków kontynuacji wiersza. Ta funkcja umożliwia kopiowanie zawartości z dokumentu XML i wklejanie jej bezpośrednio do programu Visual Basic.
Wyrażenia osadzone formularza <%= exp %>
umożliwiają dodawanie informacji dynamicznych do literału elementu XML. Aby uzyskać więcej informacji, zobacz Wyrażenia osadzone w języku XML.
Kompilator języka Visual Basic konwertuje literał elementu XML na wywołania XElement konstruktora i, jeśli jest to wymagane, XAttribute konstruktor.
Przestrzenie nazw XML
Prefiksy przestrzeni nazw XML są przydatne podczas tworzenia literałów XML z elementami z tej samej przestrzeni nazw wiele razy w kodzie. Można użyć globalnych prefiksów przestrzeni nazw XML, które definiuje się za pomocą Imports
instrukcji lub prefiksów lokalnych, które definiuje się przy użyciu składni atrybutu xmlns:xmlPrefix="xmlNamespace"
. Aby uzyskać więcej informacji, zobacz Import Statement (XML Namespace).
Zgodnie z regułami określania zakresu dla przestrzeni nazw XML lokalne prefiksy mają pierwszeństwo przed globalnymi prefiksami. Jeśli jednak literał XML definiuje przestrzeń nazw XML, ta przestrzeń nazw nie jest dostępna dla wyrażeń wyświetlanych w wyrażeniu osadzonym. Osadzone wyrażenie może uzyskiwać dostęp tylko do globalnej przestrzeni nazw XML.
Kompilator języka Visual Basic konwertuje każdą globalną przestrzeń nazw XML używaną przez literał XML na jedną lokalną definicję przestrzeni nazw w wygenerowanym kodzie. Globalne przestrzenie nazw XML, które nie są używane, nie są wyświetlane w wygenerowany kod.
Przykład 1
W poniższym przykładzie pokazano, jak utworzyć prosty element XML zawierający dwa zagnieżdżone puste elementy.
Dim test1 As XElement =
<outer>
<inner1></inner1>
<inner2/>
</outer>
Console.WriteLine(test1)
W przykładzie zostanie wyświetlony następujący tekst. Zwróć uwagę, że literał zachowuje strukturę pustych elementów.
<outer>
<inner1></inner1>
<inner2 />
</outer>
Przykład 2
W poniższym przykładzie pokazano, jak używać wyrażeń osadzonych do nazywania elementu i tworzenia atrybutów.
Dim elementType = "book"
Dim authorName = "My Author"
Dim attributeName1 = "year"
Dim attributeValue1 = 1999
Dim attributeName2 = "title"
Dim attributeValue2 = "My Book"
Dim book As XElement =
<<%= elementType %>
isbn="1234"
author=<%= authorName %>
<%= attributeName1 %>=<%= attributeValue1 %>
<%= New XAttribute(attributeName2, attributeValue2) %>
/>
Console.WriteLine(book)
Ten kod wyświetla następujący tekst:
<book isbn="1234" author="My Author" year="1999" title="My Book" />
Przykład 3
Poniższy przykład deklaruje ns
jako prefiks przestrzeni nazw XML. Następnie używa prefiksu przestrzeni nazw do utworzenia literału XML i wyświetla ostateczny formularz elementu.
' 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
Ten kod wyświetla następujący tekst:
<ns:outer xmlns:ns="http://SomeNamespace">
<ns:middle xmlns:ns="http://NewNamespace">
<ns:inner1 />
<inner2 xmlns="http://SomeNamespace" />
</ns:middle>
</ns:outer>
Zwróć uwagę, że kompilator przekonwertował prefiks globalnej przestrzeni nazw XML na definicję prefiksu dla przestrzeni nazw XML. Element <ns:middle> definiuje prefiks przestrzeni nazw XML dla <elementu ns:inner1> . <Jednak element ns:inner2> używa przestrzeni nazw zdefiniowanej przez instrukcję Imports
.