LINQ to XML'e genel bakış

LINQ to XML .NET Language-Integrated Query (LINQ) Framework'Language-Integrated bellek içinde XML programlama arabirimi sağlar. LINQ to XML .NET özellikleri kullanır ve güncelleştirilmiş, yeniden tasarlanmış bir Belge Nesne Modeli (DOM) XML programlama arabirimiyle karşılaştırılabilir.

XML, verileri birçok bağlamda biçimlendirmenin bir yolu olarak yaygın olarak benimsendi. Örneğin XML'i Web'de, yapılandırma dosyalarında, Word dosyalarında Microsoft Office veritabanlarında bulabilirsiniz.

LINQ to XML XML ile programlamaya güncel ve yeniden tasarlanmış bir yaklaşımdır. Uygulamanın (DOM) bellek içinde belge Belge Nesne Modeli sağlar ve LINQ sorgu ifadelerini destekler. Bu sorgu ifadeleri sözdizmi olarak XPath'den farklı olsa da benzer işlevler sağlar.

LINQ to XML geliştiriciler

LINQ to XML çeşitli geliştiricileri hedefler. Yalnızca bir şeyler yapmak isteyen ortalama bir geliştirici için LINQ to XML, xml'e benzer bir sorgu deneyimi sağlayarak XML'i SQL. Biraz çalışmayla, programcılar kendi bilgisayar dillerinde tercih edecekleri kısa ve güçlü sorgular yazmayı öğrenebilir.

Professional geliştiriciler üretkenliğini LINQ to XML için bu uygulamaları kullanabilir. Bu LINQ to XML daha ifade edici, daha kompakt ve daha güçlü olan daha az kod yazabilir. Aynı anda birden çok veri etki alanının sorgu ifadelerini kullanabilirler.

LINQ to XML XML programlama arabirimidir

LINQ to XML. .NET programlama dillerinden XML ile çalışmanız için LINQ özellikli, bellek içinde XML programlama arabirimidir.

LINQ to XML, XML Belge Nesne Modeli belleğe getirmesi için dosyanın (DOM) kullanımına benzer. Belgeyi sorgular ve değiştirebilirsiniz. Bunu değiştirdikten sonra bir dosyaya kaydedebilir veya seri hale getirerek İnternet üzerinden gönderebilirsiniz. Ancak, LINQ to XML DOM'dan farklıdır:

  • Daha hafif ve birlikte çalışması daha kolay olan yeni bir nesne modeli sağlar.
  • C# ve Visual Basic'daki dil özelliklerinden Visual Basic.

Bunu kullanmanın en önemli LINQ to XML, Language-Integrated Query (LINQ) ile tümleşmesidir. Bu tümleştirme, öğe ve öznitelik koleksiyonlarını almak için bellek içinde XML belgesinde sorgular yazmanıza olanak sağlar. Uygulamanın sorgu özelliği LINQ to XML XPath ve XQuery ile işlev olarak karşılaştırılabilir (söz dizimleri içinde değildir). C# ve Visual Basic LINQ tümleştirmesi daha güçlü yazma, derleme zamanı denetimi ve geliştirilmiş hata ayıklayıcı desteği sağlar.

Bu özelliğin LINQ to XML bir diğer avantajı, sorgu sonuçlarını ve nesne oluşturucuları için parametre olarak kullanmak, XML ağaçları oluşturmak için güçlü XElement XAttribute bir yaklaşıma olanak sağlar. İşlevsel yapı olarak adlandırılan bu yaklaşım, geliştiricilerin XML ağaçlarını bir şekilden diğerine kolayca dönüştürmesini sağlar.

Örneğin, Örnek XML dosyası: Tipik satın alma siparişi altında açıklandığı gibi tipik bir XML satın alma siparişiniz olabilir. Aşağıdaki LINQ to XML kullanarak, satın alma siparişteki her öğe için parça numarası öznitelik değerini almak için aşağıdaki sorguyu çalıştırabilirsiniz:

// 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

C# ile bu, yöntem söz dizimi formunda yeniden yazılabilir:

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

Başka bir örnek olarak, 100 ABD dolarının üzerinde bir değere sahip öğelerin parça sayısına göre sıralanmış bir liste istiyor olabilir. Bu bilgileri almak için aşağıdaki sorguyu çalıştırabilirsiniz:

// 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

Yine C# ile yöntem söz dizimi formunda bu yeniden yazılabilir:

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

Bu LINQ özelliklerine ek olarak, LINQ to XML geliştirilmiş bir XML programlama arabirimi sağlar. LINQ to XML kullanarak şunları da s:

  • Dosyalardan veya akışlardan XML yükleme.
  • XML'i dosyalara veya akışlara seri hale getirme.
  • İşlevsel oluşturma kullanarak sıfırdan XML oluşturun.
  • XPath'e benzer eksenler kullanarak XML'i sorgular.
  • , , ve gibi yöntemleri kullanarak bellek içinde XML Add Remove ReplaceWith ağacını SetValue işleme.
  • XSD kullanarak XML ağaçlarını doğrulama.
  • XML ağaçlarını bir şekilden diğerine dönüştürmek için bu özelliklerin bir birleşimini kullanın.

XML ağaçları oluşturma

Programlamanın en önemli avantajlarından biri LINQ to XML XML ağaçları oluşturmanın kolay olduğudır. Örneğin, küçük bir XML ağacı oluşturmak için aşağıdaki gibi kod yazabilirsiniz:

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>

Not

Örneğin Visual Basic sürümü XML değişmez değişmezlerini kullanır. C# sürümünde XElement olduğu Visual Basic kullanarak da kullanabilirsiniz.

Daha fazla bilgi için bkz. XML ağaçları.

Ayrıca bkz.