Share via


Eingebettete Ausdrücke in XML (Visual Basic)

Mit eingebetteten Ausdrücken können XML-Literale erstellt werden, die Ausdrücke enthalten, welche zur Laufzeit ausgewertet werden.Die Syntax für einen eingebetteten Ausdruck ist <%= expression %>. Sie stimmt mit der in ASP.NET verwendeten Syntax überein.

Beispielsweise können XML-Elementliterale erstellt und so eingebettete Ausdrücke mit Literaltextinhalt kombiniert werden.

Dim isbnNumber As String = "12345"
Dim modifiedDate As String = "3/5/2006"
Dim book As XElement = 
    <book category="fiction" isbn=<%= isbnNumber %>>
        <modifiedDate><%= modifiedDate %></modifiedDate>
    </book>

Wenn isbnNumber die ganze Zahl 12345 und modifiedDate das Datum 3/5/2006 enthält, hat book nach der Ausführung des Codes den folgenden Wert:

<book category="fiction" isbn="12345">
  <modifiedDate>3/5/2006</modifiedDate>
</book>

Position und Validierung eingebetteter Ausdrücke

Eingebettete Ausdrücke können nur an bestimmten Positionen in XML-Literalausdrücken stehen.Die Position des Ausdrucks legt fest, welche Typen der Ausdruck zurückgeben kann und wie Nothing behandelt wird.In der folgenden Tabelle werden die zulässigen Positionen und Typen eingebetteter Ausdrücke beschrieben.

Position im Literal

Ausdruckstyp

Behandlung von Nothing

XML-Elementname

XName

Fehler

XML-Elementinhalt

Object oder Array von Object

Ignoriert

XML-Element-Attributname

XName

Fehler, außer wenn der Attributwert auch Nothing ist

XML-Element-Attributwert

Object

Attributdeklaration wird ignoriert

XML-Elementattribut

XAttribute oder eine Auflistung von XAttribute

Ignoriert

XML-Dokument-Stammelement

XElement oder eine Auflistung eines XElement-Objekts und einer beliebigen Anzahl von XProcessingInstruction-Objekten und XComment-Objekten

Ignoriert

  • Beispiel für einen eingebetteten Ausdruck in einem XML-Elementnamen:

    Dim elementName As String = "contact"
    Dim contact1 As XElement = <<%= elementName %>/>
    
  • Beispiel für einen eingebetteten Ausdruck im Inhalt eines XML-Elements:

    Dim contactName As String = "Patrick Hines"
    Dim contact2 As XElement = 
      <contact><%= contactName %></contact>
    
  • Beispiel für einen eingebetteten Ausdruck in einem XML-Element-Attributnamen:

    Dim phoneType As String = "home"
    Dim contact3 As XElement = 
      <contact <%= phoneType %>="206-555-0144"/>
    
  • Beispiel für einen eingebetteten Ausdruck in einem XML-Element-Attributwert:

    Dim phoneNumber As String = "206-555-0144"
    Dim contact4 As XElement = 
      <contact home=<%= phoneNumber %>/>
    
  • Beispiel für einen eingebetteten Ausdruck in einem XML-Elementattribut:

    Dim phoneAttribute As XAttribute = 
      New XAttribute(XName.Get(phoneType), phoneNumber)
    Dim contact5 As XElement = 
      <contact <%= phoneAttribute %>/>
    
  • Beispiel für einen eingebetteten Ausdruck in einem XML-Dokument-Stammelement:

    Dim document As XDocument = 
      <?xml version="1.0"?><%= contact1 %>
    

Wenn Option Strict aktiviert ist, überprüft der Compiler, ob der Typ jedes eingebetteten Ausdrucks auf den erforderlichen Typ erweitert wird.Die einzige Ausnahme davon ist das Stammelement eines XML-Dokuments, das während der Ausführung des Codes überprüft wird.Wenn ohne Option Strict kompiliert wird, können Ausdrücke vom Typ Object eingebettet werden, und deren Typ wird während der Laufzeit überprüft.

An Positionen, an denen Inhalt optional ist, werden eingebettete Ausdrücke, die Nothing enthalten, ignoriert.Das bedeutet, dass vor der Verwendung eines XML-Literals nicht überprüft werden muss, ob Elementinhalt, Attributwerte und Arrayelemente Nothing sind.Erforderliche Werte, z. B. Element- und Attributnamen, können nicht Nothing sein.

Weitere Informationen über die Verwendung von eingebetteten Ausdrücken in Literalen eines bestimmten Typs finden Sie unter XML-Dokumentliteral (Visual Basic), XML-Elementliteral (Visual Basic).

Bereichsregeln

Der Compiler konvertiert jedes XML-Literal in einen Konstruktoraufruf des entsprechenden Literaltyps.Der Literalinhalt und eingebettete Ausdrücke in einem XML-Literal werden dem Konstruktor als Argumente übergeben.Das bedeutet, dass sämtliche für XML-Literale verfügbare Visual Basic-Programmierelemente auch für deren eingebettete Ausdrücke verfügbar sind.

Innerhalb eines XML-Literals kann auf die mit der Imports-Anweisung deklarierten XML-Namespacepräfixe zugegriffen werden.Mit dem xmlns-Attribut kann in einem Element ein neues XML-Namespacepräfix deklariert oder Shadowing für ein existierendes XML-Namespacepräfix durchgeführt werden.Der neue Namespace ist für untergeordnete Knoten, nicht jedoch für XML-Literale in eingebetteten Ausdrücken verfügbar.

HinweisHinweis

Wenn ein XML-Namespacepräfix mit dem xmlns-Namespace-Attribut deklariert wird, muss der Attributwert eine konstante Zeichenfolge sein.Unter diesem Gesichtspunkt gleicht die Verwendung des xmlns-Attributs der Verwendung der Imports-Anweisung zum Deklarieren eines XML-Namespace.Sie können keinen eingebetteten Ausdruck verwenden, um den XML-Namespacewert anzugeben.

Siehe auch

Referenz

XML-Dokumentliteral (Visual Basic)

XML-Elementliteral (Visual Basic)

Option Strict-Anweisung

Imports-Anweisung (.NET-Namespace und Typ)

Konzepte

Übersicht zu XML-Literalen (Visual Basic)

Weitere Ressourcen

Erstellen von XML in Visual Basic