Overzicht van LINQ naar XML
LINQ naar XML biedt een in-memory XML-programmeerinterface die gebruikmaakt van het LINQ-framework (Language-Integrated Query) van .NET. LINQ naar XML maakt gebruik van .NET-mogelijkheden en is vergelijkbaar met een bijgewerkte, opnieuw ontworpen XML-programmeerinterface (Document Object Model).
XML is veel gebruikt als een manier om gegevens in veel contexten op te maken. U kunt bijvoorbeeld XML vinden op het web, in configuratiebestanden, in Microsoft Office Word-bestanden en in databases.
LINQ naar XML is een up-to-date, opnieuw ontworpen benadering voor programmeren met XML. Het biedt de mogelijkheden voor documentwijziging in het geheugen van het DOCUMENT Object Model (DOM) en biedt ondersteuning voor LINQ-query-expressies. Hoewel deze query-expressies syntactisch afwijken van XPath, bieden ze vergelijkbare functionaliteit.
LINQ naar XML-ontwikkelaars
LINQ naar XML is gericht op verschillende ontwikkelaars. Voor een gemiddelde ontwikkelaar die alleen iets wil doen, maakt LINQ naar XML XML eenvoudiger door een query-ervaring te bieden die vergelijkbaar is met SQL. Met slechts een beetje studie kunnen programmeurs leren om beknopte en krachtige query's te schrijven in hun programmeertaal naar keuze.
Professionele ontwikkelaars kunnen LINQ naar XML gebruiken om hun productiviteit aanzienlijk te verhogen. Met LINQ naar XML kunnen ze minder code schrijven die expressief, compacter en krachtiger is. Ze kunnen query-expressies uit meerdere gegevensdomeinen tegelijk gebruiken.
LINQ naar XML is een XML-programmeerinterface
LINQ naar XML is een in-memory XML-programmeerinterface die is ingeschakeld voor LINQ, waarmee u vanuit de .NET-programmeertalen met XML kunt werken.
LINQ naar XML is vergelijkbaar met het DOCUMENT Object Model (DOM) omdat het XML-document in het geheugen wordt geplaatst. U kunt het document opvragen en wijzigen. Nadat u het hebt gewijzigd, kunt u het opslaan in een bestand of het serialiseren en verzenden via internet. LINQ naar XML verschilt echter van DOM:
- Het biedt een nieuw objectmodel dat lichter gewicht heeft en gemakkelijker kan worden gebruikt.
- Het maakt gebruik van taalfuncties in C# en Visual Basic.
Het belangrijkste voordeel van LINQ naar XML is de integratie met Language-Integrated Query (LINQ). Met deze integratie kunt u query's schrijven op het XML-document in het geheugen om verzamelingen elementen en kenmerken op te halen. De querymogelijkheid van LINQ naar XML is vergelijkbaar in functionaliteit (hoewel niet in syntaxis) met XPath en XQuery. De integratie van LINQ in C# en Visual Basic biedt sterkere typen, compileertijdcontrole en verbeterde ondersteuning voor foutopsporingsprogramma's.
Een ander voordeel van LINQ naar XML is de mogelijkheid om queryresultaten als parameters te XElement gebruiken en XAttribute objectconstructors een krachtige benadering te bieden voor het maken van XML-structuren. Met deze methode, functionele constructie genoemd, kunnen ontwikkelaars XML-structuren eenvoudig van de ene shape naar de andere transformeren.
U kunt bijvoorbeeld een typische XML-inkooporder hebben, zoals beschreven in het VOORBEELD-XML-bestand: Typische inkooporder. Met LINQ naar XML kunt u de volgende query uitvoeren om de waarde van het onderdeelnummerkenmerk voor elk itemelement in de inkooporder op te halen:
// 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
In C# kan dit worden herschreven in de syntaxis van de methode:
IEnumerable<string> partNos = purchaseOrder.Descendants("Item").Select(x => (string) x.Attribute("PartNumber"));
Als een ander voorbeeld wilt u een lijst, gesorteerd op onderdeelnummer, van de items met een waarde die groter is dan $ 100. U kunt de volgende query uitvoeren om deze informatie te verkrijgen:
// 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
Nogmaals, in C# kan dit worden herschreven in de syntaxis van de methode:
IEnumerable<XElement> pricesByPartNos = purchaseOrder.Descendants("Item")
.Where(item => (int)item.Element("Quantity") * (decimal)item.Element("USPrice") > 100)
.OrderBy(order => order.Element("PartNumber"));
Naast deze LINQ-mogelijkheden biedt LINQ naar XML een verbeterde XML-programmeerinterface. Met LINQ naar XML kunt u het volgende doen:
- XML laden uit bestanden of streams.
- Serialiseer XML naar bestanden of streams.
- Maak een volledig nieuwe XML met behulp van functionele constructie.
- Query's uitvoeren op XML met XPath-achtige assen.
- De XML-structuur in het geheugen bewerken met behulp van methoden zoals Add, Removeen ReplaceWithSetValue.
- XML-structuren valideren met BEHULP van XSD.
- Gebruik een combinatie van deze functies om XML-structuren van de ene shape naar een andere te transformeren.
XML-structuren maken
Een van de belangrijkste voordelen van programmeren met LINQ naar XML is dat u eenvoudig XML-structuren kunt maken. Als u bijvoorbeeld een kleine XML-structuur wilt maken, kunt u als volgt code schrijven:
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>
Notitie
De Visual Basic-versie van het voorbeeld maakt gebruik van letterlijke XML-gegevens. U kunt ook in Visual Basic gebruiken XElement , zoals in de C#-versie.
Zie XML-structuren voor meer informatie.