Přehled LINQ to XML
LINQ to XML poskytuje programovací rozhraní XML v paměti, které využívá rozhraní .NET Language-Integrated Query (LINQ). LINQ to XML používá funkce .NET a je srovnatelný s aktualizovaným, přepracovaným programovacím rozhraním XML model DOM (Document Object Model) (DOM).
Xml se běžně používá 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 Microsoft Office wordových souborech a v databázích.
LINQ to XML je aktuální přepracovaný přístup k programování pomocí XML. Poskytuje možnosti změny dokumentu v paměti modelu DOM (model DOM (Document Object Model)) a podporuje výrazy dotazů LINQ. Přestože se tyto výrazy dotazů syntakticky liší od XPath, poskytují podobné funkce.
LINQ to XML vývojářů
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 xml usnadňuje tím, že poskytuje prostředí pro dotazy, které je podobné SQL. S trochou studia se programátoři mohou naučit psát stručné a výkonné dotazy ve svém programovacím jazyce podle volby.
Professional vývojáři mohou pomocí LINQ to XML výrazně zvýšit svou produktivitu. Díky LINQ to XML mohou napsat méně kódu, který je výraznější, kompaktnější a výkonnější. Mohou používat výrazy dotazů z více datových domén současně.
LINQ to XML je programovací rozhraní XML.
LINQ to XML je programovací rozhraní XML v paměti s podporou LINQ, které umožňuje pracovat se souborem XML z programovacích jazyků .NET.
LINQ to XML je jako model DOM (Document Object Model) (DOM) v tom, že přináší dokument XML do paměti. Dokument můžete dotazovat a upravovat a po jeho úpravě jej můžete uložit do souboru nebo serializovat a odeslat ho přes internet. Liší se ale LINQ to XML 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 tohoto LINQ to XML je jeho integrace s Language-Integrated Query (LINQ). Tato integrace umožňuje psát dotazy na dokument XML v paměti pro načtení kolekcí elementů a atributů. Schopnost dotazování v LINQ to XML je srovnatelná z hlediska funkčnosti (i když ne v syntaxi) s XPath a XQuery. Integrace LINQ v jazyce C# a Visual Basic umožňuje silnější psaní, kontrolu doby kompilace a vylepšenou podporu ladicího programu.
Další výhodou LINQ to XML je možnost používat výsledky dotazu jako parametry pro konstruktory objektů a umožňuje účinný přístup k XElement XAttribute vytváření stromů XML. Tento přístup, který se nazývá funkční konstrukce, umožňuje vývojářům snadno transformovat stromy XML z jednoho tvaru na jiný.
Můžete mít například typickou nákupní objednávku XML, jak je popsáno v části Ukázkový soubor XML: Typická nákupní objednávka. Pomocí LINQ to XML můžete spuštěním následujícího dotazu získat hodnotu atributu čísla části 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# to lze přepsat ve formě syntaxe metody:
IEnumerable<string> partNos = purchaseOrder.Descendants("Item").Select(x => (string) x.Attribute("PartNumber"));
Jako další příklad můžete chtít seznam položek seřazených podle čísla části s hodnotou větší než $100. 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# to lze znovu 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řit XML od nuly pomocí funkční konstrukce.
- Dotazování XML pomocí os typu XPath
- Manipulovat se stromem XML v paměti pomocí metod, jako jsou Add , Remove , a ReplaceWith SetValue .
- Ověřovat stromy XML pomocí XSD.
- Pomocí kombinace těchto funkcí můžete transformovat stromy XML z jednoho tvaru do druhého.
Vytváření stromů XML
Jednou z nejvýznamnějších výhod programování s LINQ to XML je, že vytváření stromů XML je snadné. 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
Výchozí Visual Basic příkladu používá literály XML. Můžete také použít XElement v Visual Basic, jako ve verzi jazyka C#.
Další informace najdete v tématu Stromy XML.