Bagikan melalui


Konstruksi fungsi (LINQ ke XML)

LINQ ke XML menyediakan cara yang ampuh untuk membuat elemen XML yang disebut konstruksi fungsi. Konstruksi fungsional memungkinkan Anda membuat pohon XML dalam satu pernyataan.

Beberapa fitur utama antarmuka pemrograman LINQ ke XML digunakan dalam konstruksi fungsi:

  • Konstruktor XElement mengambil berbagai jenis argumen untuk konten. Misalnya, Anda dapat meneruskan XElement objek lain, yang menjadi elemen anak. Anda dapat meneruskan XAttribute objek, yang menjadi atribut elemen. Atau Anda dapat meneruskan jenis objek lainnya, yang dikonversi menjadi string dan menjadi konten teks elemen.
  • Konstruktor XElement mengambil params array jenis Object, sehingga Anda dapat meneruskan sejumlah objek ke konstruktor. Ini memungkinkan Anda membuat elemen yang memiliki konten kompleks.
  • Jika objek mengimplementasikan IEnumerable<T>, koleksi dalam objek dijumlahkan, dan semua item dalam koleksi ditambahkan. Jika koleksi berisi objek XElement atau XAttribute, setiap item dalam koleksi ditambahkan secara terpisah. Ini penting karena memungkinkan Anda meneruskan hasil kueri LINQ ke konstruktor.

Contoh: Membuat pohon XML

Anda dapat menggunakan konstruksi fungsional untuk menulis kode untuk membuat pohon XML. Berikut ini adalah contohnya:

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

Contoh: Membuat pohon XML menggunakan hasil kueri LINQ

Fitur-fitur ini juga memungkinkan Anda menulis kode yang menggunakan hasil kueri LINQ saat Anda membuat pohon XML, seperti dalam contoh berikut:

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);

Dalam Visual Basic, hal yang sama dicapai dengan literal XML:

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)

Contoh ini menghasilkan output berikut:

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

Lihat juga