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:

    • 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:

      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:

  • </[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

Eingebettete Ausdrücke in XML

Referenz

XElement

XML-Kommentarliteral

XML-CDATA-Literal

Imports-Anweisung (.NET-Namespace und Typ)

Weitere Ressourcen

XML-Literale

Erstellen von XML in Visual Basic