Sdílet prostřednictvím


Literály XML v jazyce Visual Basic (LINQ to XML)

Tento článek obsahuje informace o vytváření stromů XML v jazyce Visual Basic pomocí literálů XML a vložených výrazů.

Příklad: Vytvoření stromu XML pomocí literálů XML

Následující příklad ukazuje, jak vytvořit XElement, v tomto případě contacts, s literály XML:

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>

Příklad: Použití literálů XML k vytvoření XElement s jednoduchým obsahem

Můžete vytvořit obsah XElement , který obsahuje jednoduchý obsah, následujícím způsobem:

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

Tento příklad vytvoří následující výstup:

<Customer>Adventure Works</Customer>

Příklad: Vytvoření prázdného elementu pomocí literálu XML

Prázdnou položku XElementmůžete vytvořit následujícím způsobem:

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

Tento příklad vytvoří následující výstup:

<Customer />

Vytváření obsahu pomocí vložených výrazů

Důležitou funkcí literálů XML je, že umožňují vložené výrazy. Vložené výrazy umožňují vyhodnotit výraz a vložit výsledky výrazu do stromu XML. Pokud se výraz vyhodnotí jako typ XElement, vloží se do stromu prvek. Pokud se výraz vyhodnotí jako typ XAttribute, atribut se vloží do stromu. Do stromu můžete vložit prvky a atributy pouze tam, kde jsou platné.

Je důležité si uvědomit, že do vloženého výrazu může jít jenom jeden výraz. Nelze vložit více příkazů. Pokud výraz přesahuje jeden řádek, musíte použít znak pokračování řádku.

Pokud použijete vložený výraz k přidání existujících uzlů (včetně elementů) a atributů do nového stromu XML a pokud už jsou existující uzly nadřazené, naklonují se uzly. Nově naklonované uzly jsou připojené k novému stromu XML. Pokud existující uzly nejsou nadřazené, jsou uzly jednoduše připojené k novému stromu XML. Poslední příklad v tomto článku to ukazuje.

Příklad: Vložení elementu pomocí vloženého výrazu

Následující příklad používá vložený výraz k vložení elementu do stromu:

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

Tento příklad vytvoří následující výstup:

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

Příklad: Použití vloženého výrazu pro obsah

Vložený výraz můžete použít k zadání obsahu elementu:

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

Tento příklad vytvoří následující výstup:

<Root>Some content</Root>

Příklad: Použití dotazu LINQ ve vloženém výrazu

Výsledky dotazu LINQ můžete použít k zadání obsahu elementu:

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

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

Console.WriteLine(n)

Tento příklad vytvoří následující výstup:

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

Příklad: Použití vloženého výrazu k zadání názvů uzlů

Vložený výraz můžete také použít k výpočtu názvů atributů, hodnot atributů, názvů elementů a hodnot elementů:

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)

Tento příklad vytvoří následující výstup:

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

Příklad: Použití vloženého výrazu ke klonování a připojení uzlů

Jak už bylo zmíněno dříve, použijete-li vložený výraz k přidání existujících uzlů (včetně elementů) a atributů do nového stromu XML a pokud jsou uzly přidané uzly již nadřazené, naklonují se uzly a klony se připojí k novému stromu XML. Pokud existující uzly nejsou nadřazené, jsou jednoduše připojené k novému stromu XML.

Následující kód ukazuje chování při přidání nadřazeného elementu do stromu a při přidání elementu bez nadřazeného prvku do stromu.

' 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"))

Tento příklad vytvoří následující výstup:

Child1 was cloned
Child2 was attached

Viz také