İşlevsel yapı (LINQ to XML)

LINQ to XML, işlevsel yapı adı verilen XML öğeleri oluşturmak için güçlü bir yol sağlar. İşlevsel yapı, tek bir deyimde XML ağacı oluşturmanıza olanak tanır.

LINQ to XML programlama arabiriminin çeşitli temel özellikleri işlevsel yapıda kullanılır:

  • Oluşturucu, XElement içerik için çeşitli bağımsız değişken türlerini alır. Örneğin, alt öğeye dönüşen başka bir XElement nesne geçirebilirsiniz. Öğesinin özniteliğine dönüşen bir nesneyi geçirebilirsiniz XAttribute . Ya da dizeye dönüştürülen ve öğesinin metin içeriğine dönüşen başka bir nesne türünü geçirebilirsiniz.
  • XElement Oluşturucu türündeki Objectbir params dizi alır, böylece oluşturucuya istediğiniz sayıda nesne geçirebilirsiniz. Bu, karmaşık içeriğe sahip bir öğe oluşturmanıza olanak tanır.
  • Bir nesne uygularsa IEnumerable<T>, nesnedeki koleksiyon numaralandırılır ve koleksiyondaki tüm öğeler eklenir. Koleksiyonda XElement veya XAttribute nesneleri varsa, koleksiyondaki her öğe ayrı olarak eklenir. LinQ sorgusunun sonuçlarını oluşturucuya geçirmenize olanak sağladığından bu önemlidir.

Örnek: XML ağacı oluşturma

XML ağacı oluşturmak için kod yazmak için işlevsel yapıyı kullanabilirsiniz. Aşağıda bir örnek verilmiştir:

XElement contacts =
    new XElement("Contacts",
        new XElement("Contact",
            new XElement("Name", "Patrick Hines"),
            new XElement("Phone", "206-555-0144"),
            new XElement("Address",
                new XElement("Street1", "123 Main St"),
                new XElement("City", "Mercer Island"),
                new XElement("State", "WA"),
                new XElement("Postal", "68042")
            )
        )
    );

Örnek: LINQ sorgu sonuçlarını kullanarak XML ağacı oluşturma

Bu özellikler, aşağıdaki örnekte olduğu gibi bir XML ağacı oluşturduğunuzda LINQ sorgularının sonuçlarını kullanan kod yazmanızı da sağlar:

XElement srcTree = new XElement("Root",
    new XElement("Element", 1),
    new XElement("Element", 2),
    new XElement("Element", 3),
    new XElement("Element", 4),
    new XElement("Element", 5)
);
XElement xmlTree = new XElement("Root",
    new XElement("Child", 1),
    new XElement("Child", 2),
    from el in srcTree.Elements()
    where (int)el > 2
    select el
);
Console.WriteLine(xmlTree);

Visual Basic'te aynı şey XML değişmez değerleriyle gerçekleştirilir:

Dim srcTree As XElement = _
    <Root>
        <Element>1</Element>
        <Element>2</Element>
        <Element>3</Element>
        <Element>4</Element>
        <Element>5</Element>
    </Root>
Dim xmlTree As XElement = _
    <Root>
        <Child>1</Child>
        <Child>2</Child>
        <%= From el In srcTree.Elements() _
            Where CInt(el) > 2 _
            Select el %>
    </Root>
Console.WriteLine(xmlTree)

Bu örnek aşağıdaki çıkışı oluşturur:

<Root>
  <Child>1</Child>
  <Child>2</Child>
  <Element>3</Element>
  <Element>4</Element>
  <Element>5</Element>
</Root>

Ayrıca bkz.