Megosztás a következőn keresztül:


Beágyazott kifejezések XML-ben (Visual Basic)

A beágyazott kifejezések lehetővé teszik olyan XML-literálok létrehozását, amelyek futásidőben kiértékelt kifejezéseket tartalmaznak. A beágyazott kifejezések szintaxisa megegyezik <%=expression%>a ASP.NET használt szintaxisával.

Létrehozhat például egy XML-elemkonstanst, amely a beágyazott kifejezéseket literális szöveges tartalommal kombinálja.

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>

Ha isbnNumber az 12345 egész számot tartalmazza, és modifiedDate a 2006.05.03. dátumot tartalmazza, a kód végrehajtásakor a következő érték jelenik book meg:

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

Beágyazott kifejezés helye és érvényesítése

A beágyazott kifejezések csak bizonyos helyeken jelenhetnek meg az XML-konstanskifejezéseken belül. A kifejezés helye határozza meg, hogy a kifejezés milyen típusokat tud visszaadni, és hogyan Nothing kezelhető. Az alábbi táblázat a beágyazott kifejezések engedélyezett helyeit és típusait ismerteti.

Hely literálban Kifejezés típusa A Nothing
XML-elem neve XName Hiba
XML-elem tartalma Object vagy tömbje Object Figyelmen kívül hagyva
XML-elem attribútumának neve XName Hiba, kivéve, ha az attribútum értéke is Nothing
XML-elem attribútumának értéke Object Az attribútum deklarációja figyelmen kívül hagyva
XML-elem attribútuma XAttribute vagy gyűjteményét XAttribute Figyelmen kívül hagyva
XML-dokumentum gyökéreleme XElement vagy egy XElement objektum gyűjteményét, valamint tetszőleges számú XProcessingInstruction és XComment objektumot tartalmazó gyűjteményt Figyelmen kívül hagyva
  • Példa egy beágyazott kifejezésre egy XML-elemnévben:

    Dim elementName As String = "contact"
    Dim contact1 As XElement = <<%= elementName %>/>
    
  • Példa beágyazott kifejezésre egy XML-elem tartalmában:

    Dim contactName As String = "Patrick Hines"
    Dim contact2 As XElement = 
      <contact><%= contactName %></contact>
    
  • Példa egy beágyazott kifejezésre egy XML-elem attribútumában:

    Dim phoneType As String = "home"
    Dim contact3 As XElement = 
      <contact <%= phoneType %>="206-555-0144"/>
    
  • Példa beágyazott kifejezésre egy XML-elem attribútumértékében:

    Dim phoneNumber As String = "206-555-0144"
    Dim contact4 As XElement = 
      <contact home=<%= phoneNumber %>/>
    
  • Példa beágyazott kifejezésre egy XML-elem attribútumában:

    Dim phoneAttribute As XAttribute = 
      New XAttribute(XName.Get(phoneType), phoneNumber)
    Dim contact5 As XElement = 
      <contact <%= phoneAttribute %>/>
    
  • Példa beágyazott kifejezésre egy XML-dokumentum gyökérelemében:

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

Ha engedélyezi Option Strict, a fordító ellenőrzi, hogy az egyes beágyazott kifejezések típusa a szükséges típusra szélesedik-e. Az egyetlen kivétel egy XML-dokumentum gyökéreleme, amely a kód futtatásakor lesz ellenőrizve. Ha anélkül Option Strictfordít, beágyazhat típuskifejezéseket Object , és azok típusa futásidőben ellenőrizhető.

Azokban a helyeken, ahol a tartalom nem kötelező, a beágyazott kifejezéseket figyelmen kívül hagyja a rendszer Nothing . Ez azt jelenti, hogy nem kell ellenőriznie, hogy az elemtartalmak, az attribútumértékek és a tömbelemek nem Nothing szerepelnek-e xml-literál használata előtt. A szükséges értékek, például az elem- és attribútumnevek nem lehetnek Nothing.

A beágyazott kifejezések adott típusú literálban való használatáról az XML-dokumentumkonstans és az XML-elemkonstans című témakörben talál további információt.

Hatókörkezelési szabályok

A fordító az egyes XML-literálokat konstruktorhívássá alakítja a megfelelő literális típushoz. Az XML-literálban lévő literális tartalom és beágyazott kifejezések argumentumként lesznek átadva a konstruktornak. Ez azt jelenti, hogy az XML-literálhoz elérhető összes Visual Basic programozási elem a beágyazott kifejezések számára is elérhető.

Egy XML-konstanson belül elérheti az utasítással Imports deklarált XML-névtér-előtagokat. Az attribútum használatával xmlns deklarálhat egy új XML-névtérelőtagot vagy árnyékolást egy meglévő XML-névtérelőtagban. Az új névtér az elem gyermekcsomópontjai számára érhető el, a beágyazott kifejezésekben lévő XML-literálok számára azonban nem.

Feljegyzés

Ha a névtérattribútum használatával xmlns deklarál egy XML-névtér-előtagot, az attribútumértéknek állandó sztringnek kell lennie. Ebben a tekintetben az xmlns attribútum használata olyan, mint egy XML-névtér deklarálása az Imports utasítással. Beágyazott kifejezéssel nem adhatja meg az XML-névtér értékét.

Lásd még