XML-Elementliteral
Aktualisiert: November 2007
Ein Literal, das ein XElement-Objekt darstellt.
<name [ attributeList ] />
-or-
<name [ attributeList ] > [ elementContents ] </[ name ]>
Bestandteile
<
Erforderlich. Öffnet das Startelementtag.name
Erforderlich. Name des Elements. Das Format ist eines der folgenden:Literaltext für den Elementnamen in der Form [ePrefix:]eName, für den gilt:
Bestandteil
Beschreibung
ePrefix
Optional. XML-Namespacepräfix für das Element. Muss ein globaler XML-Namespace sein, der mit einer Imports-Anweisung in der Datei oder auf Projektebene definiert wird, oder ein lokaler XML-Namespace, der in diesem Element oder einem übergeordneten Element definiert wird.
eName
Erforderlich. Name des Elements. Das Format ist eines der folgenden:
Literaltext. Siehe Namen von deklarierten XML-Elementen und Attributen.
Eingebetteter Ausdruck der Form <%= eNameExp%>. Der Typ von eNameExp muss String oder ein Typ sein, der implizit zu XName umwandelbar ist.
Eingebetteter Ausdruck der Form <%= nameExp %>. Der Typ von nameExp muss String oder ein Typ sein, der implizit zu XName umwandelbar ist. Eingebettete Ausdrücke sind in Endtags von Elementen nicht zulässig.
attributeList
Optional. Liste von Attributen, die im Literal deklariert werden.attribute [ attribute ... ]
Jedes attribute hat eine der folgenden Syntaxen:
Attributzuweisung in der Form [aPrefix:]aName=aValue, für die gilt:
Bestandteil
Beschreibung
aPrefix
Optional. XML-Namespacepräfix für das Attribut. Muss ein globaler XML-Namespace sein, der mit einer Imports-Anweisung definiert wird, oder ein lokaler XML-Namespace, der in diesem Element oder einem übergeordneten Element definiert wird.
aName
Erforderlich. Name des Attributs. Das Format ist eines der folgenden:
Literaltext. Siehe Namen von deklarierten XML-Elementen und Attributen.
Eingebetteter Ausdruck der Form <%= aNameExp %>. Der Typ von aNameExp muss String oder ein Typ sein, der implizit zu XName umwandelbar ist.
aValue
Optional. Wert des Attributs. Das Format ist eines der folgenden:
Literaltext in Anführungszeichen.
Eingebetteter Ausdruck der Form <%= aValueExp %>. Jeder Typ ist zulässig.
Eingebetteter Ausdruck der Form <%= aExp %>.
/>
Optional. Gibt an, dass das Element ein leeres Element ohne Inhalt ist.>
Erforderlich. Beendet den öffnenden oder leeren Elementtag.elementContents
Optional. Inhalt des Elements.content [ content ... ]
Für jeden content gibt es folgende Möglichkeiten:
Literaltext. Sämtlicher Leerraum in elementContents wird bedeutend, wenn Literaltext vorhanden ist.
Eingebetteter Ausdruck der Form <%= contentExp %>.
XML-Elementliteral.
XML-Kommentarliteral. Siehe XML-Kommentarliteral.
XML-Verarbeitungsanweisungsliteral. Siehe XML-Verarbeitungsanweisungsliteral.
XML-CDATA-Literal. Siehe XML-CDATA-Literal.
</[name]>
Optional. Stellt das Endtag für das Element dar. Der optionale name-Parameter ist nicht zulässig, wenn er aus einem eingebetteten Ausdruck resultiert.
Rückgabewert
Ein XElement-Objekt.
Hinweise
Mit der Syntax des XML-Elementliterals können Sie XElement-Objekte im Code erstellen.
Hinweis: |
---|
Ein XML-Literal kann mehrere Zeilen umfassen, ohne Zeilenfortsetzungszeichen zu verwenden. Mit diesem Feature können Sie den Inhalt eines XML-Dokuments kopieren und direkt in ein Visual Basic-Programm einfügen. |
Mit eingebetteten Ausdrücken der Form <%=exp%> können einem XML-Elementliteral dynamische Informationen hinzugefügt werden. Weitere Informationen finden Sie unter Eingebettete Ausdrücke in XML.
Im Visual Basic-Kompiler wird das XML-Elementliteral in Aufrufe an den XElement-Konstruktor und ggf. an den XAttribute-Konstruktor umgewandelt.
XML-Namespaces
XML-Namespacepräfixe sind hilfreich, wenn Sie oft mit Elementen aus demselben Namespace XML-Literale im Code erstellen möchten. Sie können globale XML-Namespacepräfixe verwenden, die Sie mithilfe der Imports-Anweisung definieren, oder lokale Präfixe, die mit der xmlns:xmlPrefix="xmlNamespace"-Attributsyntax definiert werden. Weitere Informationen finden Sie unter Imports-Anweisung (.NET-Namespace und Typ).
Entsprechend den Bereichsregeln für XML-Namespaces haben lokale Präfixe Vorrang gegenüber globalen Präfixen. Wenn ein XML-Literal einen XML-Namespace definiert, ist dieser lokale Namespace jedoch nicht für Ausdrücke verfügbar, die in einem eingebetteten Ausdruck auftreten. Der eingebettete Ausdruck kann nur auf den globalen XML-Namespace zugreifen.
Der Visual Basic-Kompiler wandelt jeden von einem XML-Literal verwendeten globalen XML-Namespace in eine lokale Namespacedefinition im generierten Code um. Nicht verwendete globale XML-Namespaces werden im generierten Code nicht angezeigt.
Beispiel
Im folgenden Beispiel wird gezeigt, wie ein einfaches XML-Element mit zwei geschachtelten leeren Elementen erstellt wird.
Dim test1 As XElement = _
<outer>
<inner1></inner1>
<inner2/>
</outer>
Console.WriteLine(test1)
In diesem Beispiel wird der folgende Text dargestellt. Beachten Sie, dass das Literal die Struktur der leeren Elemente beibehält.
<outer>
<inner1></inner1>
<inner2 />
</outer>
Im folgenden Beispiel wird gezeigt, wie eingebettete Ausdrücke verwendet werden, um ein Element zu benennen und Attribute zu erstellen.
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)
Durch diesen Code wird folgender Text angezeigt:
<book isbn="1234" year="1999" title="My Book" />
Das folgende Beispiel deklariert ns als ein XML-Namespacepräfix. Anschließend wird ein XML-Literal erstellt, das das Namespacepräfix verwendet und die abschließende Form des Elements anzeigt.
' 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
Durch diesen Code wird folgender Text angezeigt:
<ns:outer xmlns:ns="http://SomeNamespace">
<ns:middle xmlns:ns="http://NewNamespace">
<ns:inner1 />
<inner2 xmlns="http://SomeNamespace" />
</ns:middle>
</ns:outer>
Beachten Sie, dass das XML-Namespacepräfix vom Compiler von einer globalen Präfixdefinition in eine lokale Präfixdefinition umgewandelt wurde. Das <ns:middle>-Element definiert das XML-Namespacepräfix für das <ns:inner1>-Element. Das <ns:inner2>-Element verwendet jedoch den Namespace, der durch die Imports-Anweisung definiert ist.
Siehe auch
Konzepte
Namen von deklarierten XML-Elementen und Attributen
Referenz
Imports-Anweisung (.NET-Namespace und Typ)