Dela via


Inbäddade uttryck i XML (Visual Basic)

Med inbäddade uttryck kan du skapa XML-literaler som innehåller uttryck som utvärderas vid körning. Syntaxen för ett inbäddat uttryck är <%= expression %>, vilket är samma som syntaxen som används i ASP.NET.

Du kan till exempel skapa en XML-elementliteral som kombinerar inbäddade uttryck med literalt textinnehåll.

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>

Om isbnNumber innehåller heltal 12345 och modifiedDate innehåller datumet 3/5/2006, när den här koden körs, är värdet book för:

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

Plats och validering av inbäddade uttryck

Inbäddade uttryck kan bara visas på vissa platser i XML-literaluttryck. Uttryckets plats styr vilka typer av uttryck som kan returneras och hur Nothing hanteras. I följande tabell beskrivs tillåtna platser och typer av inbäddade uttryck.

Plats i literal Typ av uttryck Hantering av Nothing
XML-elementnamn XName Fel
XML-elementinnehåll Object eller matris med Object Har ignorerats
Namn på XML-elementattribut XName Fel, såvida inte attributvärdet också är Nothing
XML-elementattributvärde Object Attributdeklarationen ignoreras
XML-elementattribut XAttribute eller en samling XAttribute Har ignorerats
XML-dokumentrotelement XElement eller en samling av ett XElement objekt och ett godtyckligt antal XProcessingInstruction och XComment objekt Har ignorerats
  • Exempel på ett inbäddat uttryck i ett XML-elementnamn:

    Dim elementName As String = "contact"
    Dim contact1 As XElement = <<%= elementName %>/>
    
  • Exempel på ett inbäddat uttryck i innehållet i ett XML-element:

    Dim contactName As String = "Patrick Hines"
    Dim contact2 As XElement = 
      <contact><%= contactName %></contact>
    
  • Exempel på ett inbäddat uttryck i ett XML-elementattributnamn:

    Dim phoneType As String = "home"
    Dim contact3 As XElement = 
      <contact <%= phoneType %>="206-555-0144"/>
    
  • Exempel på ett inbäddat uttryck i ett XML-elementattributvärde:

    Dim phoneNumber As String = "206-555-0144"
    Dim contact4 As XElement = 
      <contact home=<%= phoneNumber %>/>
    
  • Exempel på ett inbäddat uttryck i ett XML-elementattribut:

    Dim phoneAttribute As XAttribute = 
      New XAttribute(XName.Get(phoneType), phoneNumber)
    Dim contact5 As XElement = 
      <contact <%= phoneAttribute %>/>
    
  • Exempel på ett inbäddat uttryck i ett XML-dokumentrotelement:

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

Om du aktiverar Option Strictkontrollerar kompilatorn att typen av varje inbäddat uttryck vidgas till den typ som krävs. Det enda undantaget gäller rotelementet i ett XML-dokument, som verifieras när koden körs. Om du kompilerar utan Option Strictkan du bädda in uttryck av typen Object och deras typ verifieras vid körning.

På platser där innehåll är valfritt ignoreras inbäddade uttryck som innehåller Nothing . Det innebär att du inte behöver kontrollera att elementinnehåll, attributvärden och matriselement inte Nothing är innan du använder en XML-literal. Obligatoriska värden, till exempel element- och attributnamn, får inte vara Nothing.

Mer information om hur du använder ett inbäddat uttryck i en viss typ av literal finns i XML Document Literal, XML-elementliteral.

Omfångsregler

Kompilatorn konverterar varje XML-literal till ett konstruktoranrop för lämplig literaltyp. Literalinnehållet och inbäddade uttryck i en XML-literal skickas som argument till konstruktorn. Det innebär att alla Visual Basic-programmeringselement som är tillgängliga för en XML-literal också är tillgängliga för dess inbäddade uttryck.

I en XML-literal kan du komma åt XML-namnområdesprefixen som deklarerats med -instruktionen Imports . Du kan deklarera ett nytt XML-namnområdesprefix eller skugga ett befintligt XML-namnområdesprefix i ett element med hjälp xmlns av attributet. Det nya namnområdet är tillgängligt för de underordnade noderna i det elementet, men inte för XML-literaler i inbäddade uttryck.

Kommentar

När du deklarerar ett XML-namnområdesprefix med hjälp xmlns av attributet namespace måste attributvärdet vara en konstant sträng. I det här avseendet är att använda xmlns attributet som att använda -instruktionen Imports för att deklarera ett XML-namnområde. Du kan inte använda ett inbäddat uttryck för att ange värdet för XML-namnområdet.

Se även