Delen via


XML-letterlijke elementen in Visual Basic (LINQ naar XML)

Dit artikel bevat informatie over het maken van XML-structuren in Visual Basic met behulp van letterlijke XML-tekens en ingesloten expressies.

Voorbeeld: Letterlijke XML-waarden gebruiken om een XML-structuur te maken

In het volgende voorbeeld ziet u hoe u een XElement, in dit geval contacts, maakt met letterlijke XML-waarden:

Dim contacts As XElement = _
    <Contacts>
        <Contact>
            <Name>Patrick Hines</Name>
            <Phone>206-555-0144</Phone>
            <Address>
                <Street1>123 Main St</Street1>
                <City>Mercer Island</City>
                <State>WA</State>
                <Postal>68042</Postal>
            </Address>
        </Contact>
    </Contacts>

Voorbeeld: XML-letterlijke waarden gebruiken om een XElement te maken met eenvoudige inhoud

U kunt als volgt een XElement inhoud maken die eenvoudige inhoud bevat:

Dim n as XElement = <Customer>Adventure Works</Customer>
Console.WriteLine(n)

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

<Customer>Adventure Works</Customer>

Voorbeeld: Een LETTERLIJKE XML-code gebruiken om een leeg element te maken

U kunt als volgt een lege XElementmaken:

Dim n As XElement = <Customer/>
Console.WriteLine(n)

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

<Customer />

Ingesloten expressies gebruiken om inhoud te maken

Een belangrijke functie van letterlijke XML-tekens is dat ze ingesloten expressies toestaan. Met ingesloten expressies kunt u een expressie evalueren en de resultaten van de expressie invoegen in de XML-structuur. Als de expressie resulteert in een type XElement, wordt er een element ingevoegd in de structuur. Als de expressie resulteert in een type XAttribute, wordt er een kenmerk ingevoegd in de structuur. U kunt alleen elementen en kenmerken invoegen in de structuur waar ze geldig zijn.

Het is belangrijk om te weten dat slechts één expressie kan worden opgenomen in een ingesloten expressie. U kunt niet meerdere instructies insluiten. Als een expressie verder gaat dan één regel, moet u het vervolgteken voor de regel gebruiken.

Als u een ingesloten expressie gebruikt om bestaande knooppunten (inclusief elementen) en kenmerken toe te voegen aan een nieuwe XML-structuur en als de bestaande knooppunten al zijn gekoppeld, worden de knooppunten gekloond. De zojuist gekloonde knooppunten worden gekoppeld aan de nieuwe XML-structuur. Als de bestaande knooppunten niet boven elkaar staan, worden de knooppunten gewoon gekoppeld aan de nieuwe XML-structuur. In het laatste voorbeeld in dit artikel ziet u dit.

Voorbeeld: Een ingesloten expressie gebruiken om een element in te voegen

In het volgende voorbeeld wordt een ingesloten expressie gebruikt om een element in de structuur in te voegen:

xmlTree1 As XElement = _
    <Root>
        <Child>Contents</Child>
    </Root>
Dim xmlTree2 As XElement = _
    <Root>
        <%= xmlTree1.<Child> %>
    </Root>
Console.WriteLine(xmlTree2)

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

<Root>
  <Child>Contents</Child>
</Root>

Voorbeeld: Een ingesloten expressie gebruiken voor inhoud

U kunt een ingesloten expressie gebruiken om de inhoud van een element op te geven:

Dim str As String
str = "Some content"
Dim root As XElement = <Root><%= str %></Root>
Console.WriteLine(root)

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

<Root>Some content</Root>

Voorbeeld: Een LINQ-query gebruiken in een ingesloten expressie

U kunt de resultaten van een LINQ-query gebruiken om de inhoud van een element op te geven:

Dim arr As Integer() = {1, 2, 3}

Dim n As XElement = _
    <Root>
        <%= From i In arr Select <Child><%= i %></Child> %>
    </Root>

Console.WriteLine(n)

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

<Root>
  <Child>1</Child>
  <Child>2</Child>
  <Child>3</Child>
</Root>

Voorbeeld: Een ingesloten expressie gebruiken om knooppuntnamen op te geven

U kunt ook een ingesloten expressie gebruiken om kenmerknamen, kenmerkwaarden, elementnamen en elementwaarden te berekenen:

Dim eleName As String = "ele"
Dim attName As String = "att"
Dim attValue As String = "aValue"
Dim eleValue As String = "eValue"
Dim n As XElement = _
    <Root <%= attName %>=<%= attValue %>>
        <<%= eleName %>>
            <%= eleValue %>
        </>
    </Root>
Console.WriteLine(n)

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

<Root att="aValue">
  <ele>eValue</ele>
</Root>

Voorbeeld: Een ingesloten expressie gebruiken om knooppunten te klonen en te koppelen

Zoals eerder vermeld, als u een ingesloten expressie gebruikt om bestaande knooppunten (inclusief elementen) en kenmerken toe te voegen aan een nieuwe XML-structuur en als de knooppunten die worden toegevoegd knooppunten al bovenliggend zijn, worden de knooppunten gekloond en worden de klonen gekoppeld aan de nieuwe XML-structuur. Als de bestaande knooppunten niet boven elkaar staan, worden ze gewoon gekoppeld aan de nieuwe XML-structuur.

De volgende code laat het gedrag zien wanneer u een bovenliggend element aan een boomstructuur toevoegt en wanneer u een element zonder bovenliggende element aan een boomstructuur toevoegt.

' Create a tree with a child element.
Dim xmlTree1 As XElement = _
    <Root>
        <Child1>1</Child1>
    </Root>

' Create an element that's not parented.
Dim child2 As XElement = <Child2>2</Child2>

' Create a tree and add Child1 and Child2 to it.
Dim xmlTree2 As XElement = _
    <Root>
        <%= xmlTree1.<Child1>(0) %>
        <%= child2 %>
    </Root>

' Compare Child1 identity.
Console.WriteLine("Child1 was {0}", _
    IIf(xmlTree1.Element("Child1") Is xmlTree2.Element("Child1"), _
    "attached", "cloned"))

' Compare Child2 identity.
Console.WriteLine("Child2 was {0}", _
    IIf(child2 Is xmlTree2.Element("Child2"), _
    "attached", "cloned"))

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

Child1 was cloned
Child2 was attached

Zie ook