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


XML-literálok a Visual Basicben (LINQ–XML)

Ez a cikk az XML-fák Visual Basicben xml-literálok és beágyazott kifejezések használatával történő létrehozásáról nyújt tájékoztatást.

Példa: XML-literálok használata XML-fa létrehozásához

Az alábbi példa bemutatja, hogyan hozhat létre XElementxml-literálokat tartalmazó , ebben az esetben contacts:

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élda: Xml-literálok használata egyszerű tartalommal rendelkező XElement létrehozásához

Az alábbiak szerint hozhat létre XElement egyszerű tartalmakat:

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

Ez a példa a következő kimenetet hozza létre:

<Customer>Adventure Works</Customer>

Példa: Üres elem létrehozása XML-literál használatával

Az alábbiak szerint hozhat létre üreset XElement:

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

Ez a példa a következő kimenetet hozza létre:

<Customer />

Beágyazott kifejezések használata tartalom létrehozásához

Az XML-literálok egyik fontos funkciója, hogy lehetővé teszik a beágyazott kifejezések használatát. A beágyazott kifejezések segítségével kiértékelhet egy kifejezést, és beszúrhatja a kifejezés eredményeit az XML-fába. Ha a kifejezés kiértékelése egy típusra XElementtörténik, a függvény egy elemet szúr be a fába. Ha a kifejezés kiértékelése egy típusra XAttributetörténik, a függvény egy attribútumot szúr be a fába. Elemeket és attribútumokat csak akkor szúrhat be a fába, ha azok érvényesek.

fontos megjegyezni, hogy csak egyetlen kifejezés lehet beágyazott kifejezés. Nem ágyazhat be több utasítást. Ha egy kifejezés egy vonalon túlnyúlik, akkor a sor folytatása karaktert kell használnia.

Ha beágyazott kifejezéssel meglévő csomópontokat (beleértve az elemeket) és attribútumokat ad hozzá egy új XML-fához, és ha a meglévő csomópontok már szülőként vannak beállítva, a csomópontok klónozva lesznek. Az újonnan klónozott csomópontok az új XML-fához vannak csatolva. Ha a meglévő csomópontok nincsenek fölérendelve, a csomópontok egyszerűen az új XML-fához vannak csatolva. A cikk utolsó példája ezt mutatja be.

Példa: Beágyazott kifejezés használata elem beszúrásához

Az alábbi példa beágyazott kifejezéssel szúr be egy elemet a fába:

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

Ez a példa a következő kimenetet hozza létre:

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

Példa: Beágyazott kifejezés használata tartalomhoz

Beágyazott kifejezéssel megadhatja egy elem tartalmát:

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

Ez a példa a következő kimenetet hozza létre:

<Root>Some content</Root>

Példa: LINQ-lekérdezés használata beágyazott kifejezésben

Egy LINQ-lekérdezés eredményeivel megadhatja egy elem tartalmát:

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

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

Console.WriteLine(n)

Ez a példa a következő kimenetet hozza létre:

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

Példa: Beágyazott kifejezés használata csomópontnevek megadásához

Beágyazott kifejezéssel attribútumneveket, attribútumértékeket, elemneveket és elemértékeket is kiszámíthat:

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)

Ez a példa a következő kimenetet hozza létre:

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

Példa: Csomópontok klónozása és csatolása beágyazott kifejezés használatával

Ahogy korábban említettük, ha beágyazott kifejezéssel ad hozzá meglévő csomópontokat (beleértve az elemeket) és attribútumokat egy új XML-fához, és ha a hozzáadott csomópontok már szülőként vannak beállítva, a csomópontok klónozva lesznek, és a klónok az új XML-fához vannak csatolva. Ha a meglévő csomópontok nincsenek fölérendelve, egyszerűen az új XML-fához vannak csatolva.

Az alábbi kód bemutatja, hogy milyen viselkedést mutat be, amikor szülőelemt ad hozzá egy fához, és ha szülő nélküli elemet ad hozzá egy fához.

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

Ez a példa a következő kimenetet hozza létre:

Child1 was cloned
Child2 was attached

Lásd még