Bagikan melalui


Gambaran umum LINQ ke XML

LINQ ke XML menyediakan antarmuka pemrograman XML dalam memori yang memanfaatkan .NET Kerangka kerja Language-Integrated Query (LINQ). LINQ ke XML menggunakan kemampuan .NET dan sebanding dengan antarmuka pemrograman XML Model Objek Dokumen (DOM) yang diperbarui dan didesain ulang.

XML telah diadopsi secara luas sebagai cara untuk memformat data dalam banyak konteks. Misalnya, Anda bisa menemukan XML di Web, dalam file konfigurasi, di Microsoft Office file Word, dan dalam database.

LINQ ke XML adalah pendekatan terbaru yang didesain ulang untuk pemrograman dengan XML. Ini menyediakan kemampuan modifikasi dokumen dalam memori dari Model Objek Dokumen (DOM), dan mendukung ekspresi kueri LINQ. Meskipun ekspresi kueri ini secara sintaksis berbeda dari JalurX, ekspresi kueri ini menyediakan fungsionalitas yang sama.

Pengembang LINQ ke XML

LINQ ke XML menargetkan berbagai pengembang. Untuk pengembang rata-rata yang hanya ingin menyelesaikan sesuatu, LINQ ke XML membuat XML lebih mudah dengan memberikan pengalaman kueri yang mirip dengan SQL. Hanya dengan sedikit penelitian, programmer dapat belajar menulis kueri yang ringkas dan kuat dalam bahasa pemrograman pilihan mereka.

Pengembang profesional dapat menggunakan LINQ ke XML untuk sangat meningkatkan produktivitas mereka. Dengan LINQ ke XML, mereka dapat menulis lebih sedikit kode yang lebih ekspresif, lebih ringkas, dan lebih kuat. Mereka dapat menggunakan ekspresi kueri dari beberapa domain data secara bersamaan.

LINQ ke XML adalah antarmuka pemrograman XML

LINQ ke XML adalah antarmuka pemrograman XML dalam memori yang mendukung LINQ yang memungkinkan Anda bekerja dengan XML dari dalam bahasa pemrograman .NET.

LINQ ke XML seperti Model Objek Dokumen (DOM) karena membawa dokumen XML ke dalam memori. Anda dapat mengkueri dan mengubah dokumen, dan setelah mengubahnya, Anda dapat menyimpannya ke file atau menserialisasikannya dan mengirimkannya melalui Internet. Namun, LINQ ke XML berbeda dari DOM:

  • Ini menyediakan model objek baru yang lebih ringan dan lebih mudah dikerjakan.
  • Ini memanfaatkan fitur bahasa pemrogram dalam C# dan Visual Basic.

Keuntungan terpenting dari LINQ ke XML adalah integrasinya dengan Language-Integrated Query (LINQ). Integrasi ini memungkinkan Anda menulis kueri pada dokumen XML dalam memori untuk mengambil koleksi elemen dan atribut. Kemampuan kueri LINQ ke XML sebanding dengan fungsionalitas (meskipun tidak dalam sintaks) dengan JalurX dan XQuery. Integrasi LINQ di C# dan Visual Basic memberikan pengetikan yang lebih kuat, pemeriksaan waktu kompilasi, dan dukungan debugger yang ditingkatkan.

Keuntungan lain dari LINQ ke XML adalah kemampuan untuk menggunakan hasil kueri sebagai parameter ke XElement dan XAttribute konstruktor objek memungkinkan pendekatan yang kuat untuk membuat pohon XML. Pendekatan ini, yang disebut konstruksi fungsional, memungkinkan pengembang untuk dengan mudah mengubah pohon XML dari satu bentuk ke bentuk lainnya.

Misalnya, Anda mungkin memiliki pesanan pembelian XML umum seperti yang dijelaskan dalam Sampel file XML: Pesanan pembelian umum. Dengan menggunakan LINQ ke XML, Anda dapat menjalankan kueri berikut untuk mendapatkan nilai atribut nomor bagian untuk setiap elemen item dalam pesanan pembelian:

// Load the XML file from our project directory containing the purchase orders
var filename = "PurchaseOrder.xml";
var currentDirectory = Directory.GetCurrentDirectory();
var purchaseOrderFilepath = Path.Combine(currentDirectory, filename);

XElement purchaseOrder = XElement.Load(purchaseOrderFilepath);

IEnumerable<string> partNos =  from item in purchaseOrder.Descendants("Item")
                               select (string) item.Attribute("PartNumber");
' Load the XML file from our project directory containing the purchase orders
Dim filename = "PurchaseOrder.xml"
Dim currentDirectory = Directory.GetCurrentDirectory()
Dim purchaseOrderFilepath = Path.Combine(currentDirectory, filename)

Dim purchaseOrder As XElement = XElement.Load(purchaseOrderFilepath)

Dim partNos = _
    From item In purchaseOrder...<Item> _
    Select item.@PartNumber

Dalam C# ini dapat ditulis ulang dalam bentuk sintaks metode:

IEnumerable<string> partNos = purchaseOrder.Descendants("Item").Select(x => (string) x.Attribute("PartNumber"));

Sebagai contoh lain, Anda mungkin menginginkan daftar, diurutkan menurut nomor bagian, dari item dengan nilai yang lebih besar dari $100. Untuk mendapatkan informasi ini, Anda bisa menjalankan kueri berikut:

// Load the XML file from our project directory containing the purchase orders
var filename = "PurchaseOrder.xml";
var currentDirectory = Directory.GetCurrentDirectory();
var purchaseOrderFilepath = Path.Combine(currentDirectory, filename);

XElement purchaseOrder = XElement.Load(purchaseOrderFilepath);

IEnumerable<XElement> pricesByPartNos =  from item in purchaseOrder.Descendants("Item")
                                 where (int) item.Element("Quantity") * (decimal) item.Element("USPrice") > 100
                                 orderby (string)item.Element("PartNumber")
                                 select item;
' Load the XML file from our project directory containing the purchase orders
Dim filename = "PurchaseOrder.xml"
Dim currentDirectory = Directory.GetCurrentDirectory()
Dim purchaseOrderFilepath = Path.Combine(currentDirectory, filename)

Dim purchaseOrder As XElement = XElement.Load(purchaseOrderFilepath)

Dim partNos = _
From item In purchaseOrder...<Item> _
Where (item.<Quantity>.Value * _
       item.<USPrice>.Value) > 100 _
Order By item.<PartNumber>.Value _
Select item

Sekali lagi, dalam C# ini dapat ditulis ulang dalam bentuk sintaks metode:

IEnumerable<XElement> pricesByPartNos = purchaseOrder.Descendants("Item")
                                        .Where(item => (int)item.Element("Quantity") * (decimal)item.Element("USPrice") > 100)
                                        .OrderBy(order => order.Element("PartNumber"));

Selain kemampuan LINQ ini, LINQ ke XML menyediakan antarmuka pemrograman XML yang ditingkatkan. Dengan menggunakan LINQ ke XML, Anda dapat:

  • Memuat XML dari file atau aliran.
  • Menserialisasikan XML ke file atau aliran.
  • Membuat XML dari awal dengan menggunakan konstruksi fungsi.
  • Mengkueri Xml menggunakan sumbu seperti JalurX.
  • Memanipulasi pohon XML dalam memori dengan menggunakan metode seperti Add, Remove, ReplaceWith, dan SetValue.
  • Menvalidasi pohon XML menggunakan XSD.
  • Menggunakan kombinasi fitur-fitur ini untuk mengubah pohon XML dari satu bentuk ke bentuk lain.

Membuat pohon XML

Salah satu keuntungan paling signifikan dari pemrograman dengan LINQ ke XML adalah mudah untuk membuat pohon XML. Misalnya, untuk membuat pohon XML kecil, Anda dapat menulis kode sebagai berikut:

XElement contacts =
new XElement("Contacts",
    new XElement("Contact",
        new XElement("Name", "Patrick Hines"),
        new XElement("Phone", "206-555-0144",
            new XAttribute("Type", "Home")),
        new XElement("phone", "425-555-0145",
            new XAttribute("Type", "Work")),
        new XElement("Address",
            new XElement("Street1", "123 Main St"),
            new XElement("City", "Mercer Island"),
            new XElement("State", "WA"),
            new XElement("Postal", "68042")
        )
    )
);
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>

Catatan

Versi Visual Basic contoh menggunakan literal XML. Anda juga dapat menggunakan XElement dalam Visual Basic, seperti dalam versi C#.

Untuk informasi selengkapnya, lihat pohon XML.

Lihat juga