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