Přehled LINQ to XML

LINQ to XML poskytuje programovací rozhraní XML v paměti, které využívá rozhraní .NET Language-Integrated Query (LINQ) Framework. LINQ to XML používá funkce .NET a je srovnatelný s aktualizovaným přepracovaným programovacím rozhraním XML modelu DOM (Document Object Model).

Xml byl široce přijat jako způsob formátování dat v mnoha kontextech. Xml můžete například najít na webu, v konfiguračních souborech, v systém Microsoft Office wordových souborech a v databázích.

LINQ to XML je aktuální a přepracovaný přístup k programování pomocí XML. Poskytuje možnosti úprav dokumentů v paměti modelu DOM (Document Object Model) a podporuje výrazy dotazů LINQ. I když se tyto výrazy dotazů syntakticky liší od XPathu, poskytují podobné funkce.

Vývojáři LINQ to XML

LINQ to XML cílí na celou řadu vývojářů. Pro průměrného vývojáře, který chce něco udělat, LINQ to XML usnadňuje tím, že poskytuje prostředí dotazu podobné SQL. S pouhým určitou studií se programátoři mohou naučit psát stručné a výkonné dotazy ve svém programovacím jazyce podle výběru.

Profesionální vývojáři můžou pomocí LINQ to XML výrazně zvýšit produktivitu. Díky LINQ to XML můžou psát méně kódu, který je výraznější, kompaktnější a výkonnější. Mohou současně používat výrazy dotazu z více datových domén.

LINQ to XML je programovací rozhraní XML.

LINQ to XML je programovací rozhraní XML s povoleným jazykem LINQ v paměti, které umožňuje pracovat s XML z programovacích jazyků .NET.

LINQ to XML se podobá modelu DOM (Document Object Model), který přivádí dokument XML do paměti. Dokument můžete dotazovat a upravovat a po jeho úpravách ho můžete uložit do souboru nebo ho serializovat a odeslat přes internet. LinQ to XML se ale liší od modelu DOM:

  • Poskytuje nový objektový model, který je lehčí a snadněji se s ním pracuje.
  • Využívá funkce jazyka v jazyce C# a Visual Basic.

Nejdůležitější výhodou JAZYKA LINQ to XML je integrace s jazykem integrovaným dotazem (LINQ). Tato integrace umožňuje psát dotazy na dokument XML v paměti za účelem načtení kolekcí prvků a atributů. Funkce dotazu LINQ to XML je srovnatelná s funkcemi (i když ne v syntaxi) pro XPath a XQuery. Integrace LINQ v jazyce C# a Visual Basic poskytuje silnější psaní, kontrolu času kompilace a vylepšenou podporu ladicího programu.

Další výhodou LINQ to XML je schopnost používat výsledky dotazu jako parametry a XElementXAttribute konstruktory objektů umožňuje výkonný přístup k vytváření stromů XML. Tento přístup, označovaný jako funkční konstrukce, umožňuje vývojářům snadno transformovat stromy XML z jednoho obrazce do druhého.

Můžete mít například typickou nákupní objednávku XML, jak je popsáno v ukázkovém souboru XML: Typická nákupní objednávka. Pomocí LINQ to XML můžete spustit následující dotaz, který získá hodnotu atributu číslo dílu pro každý prvek položky v nákupní objednávce:

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

V jazyce C# se dá přepsat ve formuláři syntaxe metody:

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

Jako další příklad můžete chtít seznam seřazený podle čísla části položek s hodnotou větší než 100 KČ. Pokud chcete získat tyto informace, můžete spustit následující dotaz:

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

V jazyce C# se to dá přepsat ve formě syntaxe metody:

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

Kromě těchto funkcí LINQ poskytuje LINQ to XML vylepšené programovací rozhraní XML. Pomocí LINQ to XML můžete:

  • Načtěte XML ze souborů nebo datových proudů.
  • Serializace XML do souborů nebo datových proudů.
  • Vytvoření XML od nuly pomocí funkční konstrukce.
  • Dotazování XML pomocí os podobných XPathu
  • Manipulace se stromem XML v paměti pomocí metod, jako Addjsou , Remove, ReplaceWitha SetValue.
  • Ověřte stromy XML pomocí XSD.
  • Pomocí kombinace těchto funkcí můžete transformovat stromy XML z jednoho obrazce do druhého.

Vytváření stromů XML

Jednou z nejvýznamnějších výhod programování pomocí LINQ to XML je, že je snadné vytvářet stromy XML. Pokud například chcete vytvořit malý strom XML, můžete napsat kód následujícím způsobem:

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>

Poznámka:

Verze jazyka Visual Basic v příkladu používá literály XML. Můžete také použít XElement v jazyce Visual Basic, stejně jako ve verzi jazyka C#.

Další informace najdete v tématu Stromy XML.

Viz také