Dela via


LINQ till XML jämfört med andra XML-tekniker

I den här artikeln jämförs LINQ med XML med följande XML-tekniker: XmlReader, XSLT, MSXML och XmlLite. Den här informationen kan hjälpa dig att avgöra vilka tekniker som ska användas.

En jämförelse av LINQ med XML med dokumentobjektmodellen (DOM) finns i LINQ till XML jämfört med DOM.

LINQ till XML jämfört med XmlReader

XmlReader är en snabb, framåtriktad, icke-cachelagringsparser.

LINQ till XML implementeras ovanpå XmlReaderoch de är tätt integrerade. Men du kan också använda XmlReader direkt.

Anta till exempel att du skapar en webbtjänst som parsar hundratals XML-dokument per sekund och dokumenten har samma struktur, vilket innebär att du bara behöver skriva en implementering av koden för att parsa XML. I det här fallet skulle du förmodligen vilja använda XmlReader direkt.

Om du däremot skapar ett system som parsar många mindre XML-dokument, och var och en är olika, skulle du vilja dra nytta av de produktivitetsförbättringar som LINQ till XML tillhandahåller.

LINQ till XML jämfört med XSLT

Både LINQ till XML och XSLT ger omfattande funktioner för XML-dokumenttransformering. XSLT är en regelbaserad deklarativ metod. Avancerade XSLT-programmerare skriver XSLT i ett funktionellt programmeringsformat som betonar en tillståndslös metod. Transformeringar kan skrivas med hjälp av rena funktioner som implementeras utan biverkningar. Den här regelbaserade eller funktionella metoden är obekant för många utvecklare och kan vara svår och tidskrävande att lära sig.

XSLT kan vara ett produktivt system som ger högpresterande program. Till exempel använder vissa stora webbföretag XSLT som ett sätt att generera HTML från XML som har hämtats från olika typer av datalager. Den hanterade XSLT-motorn kompilerar XSLT till CLR-kod (Common Language Runtime) och presterar ännu bättre i vissa scenarier än den interna XSLT-motorn.

XSLT drar dock inte nytta av den C#- och Visual Basic-kunskap som många utvecklare har. Det kräver att utvecklare skriver kod på ett annat och komplext programmeringsspråk. Att använda två icke-integrerade utvecklingssystem som C# (eller Visual Basic) och XSLT resulterar i programvarusystem som är svårare att utveckla och underhålla.

När du har lärt dig att använda LINQ till XML-frågeuttryck är LINQ till XML-transformeringar en kraftfull teknik som är enkel att använda. I grund och botten skapar du XML-dokumentet med hjälp av funktionell konstruktion, hämtar data från olika källor, skapar XElement objekt dynamiskt och monterar helheten i ett nytt XML-träd. Omvandlingen kan generera ett helt nytt dokument. Det är relativt enkelt och intuitivt att skapa transformeringar i LINQ till XML, och den resulterande koden är läsbar. Detta minskar kostnaderna för utveckling och underhåll.

LINQ till XML är inte avsett att ersätta XSLT. XSLT är fortfarande valfritt verktyg för komplicerade och dokumentcentrerade XML-transformeringar, särskilt om dokumentets struktur inte är väldefinierad.

XSLT har fördelen att vara en W3C-standard (World Wide Web Consortium). Om du har ett krav på att du endast använder tekniker som är standarder kan XSLT vara lämpligare.

XSLT är XML och det är därför det kan manipuleras programmatiskt.

LINQ till XML jämfört med MSXML

MSXML är den COM-baserade tekniken för bearbetning av XML som ingår i Microsoft Windows. MSXML tillhandahåller en intern implementering av DOM med stöd för XPath och XSLT. Den innehåller även sax2-icke-cachelagring, händelsebaserad parser.

MSXML fungerar bra, är säkert som standard i de flesta scenarier och kan nås i en webbläsare för att utföra XML-bearbetning på klientsidan i AJAX-liknande program. MSXML kan användas från valfritt programmeringsspråk som stöder COM, inklusive C++, JavaScript och Visual Basic 6.0.

MSXML rekommenderas inte för användning i hanterad kod baserat på CLR.

LINQ till XML jämfört med XmlLite

XmlLite är en icke-cachelagring, endast framåt, pull-parser. Utvecklare använder främst XmlLite med C++. Utvecklare rekommenderas inte att använda XmlLite med hanterad kod.

Den största fördelen med XmlLite är att det är en enkel, snabb XML-parser som är säker i de flesta scenarier. Dess hotyta är liten. Om du måste parsa ej betrodda dokument och du vill skydda mot attacker som Denial of Service eller exponering av data kan XmlLite vara ett bra alternativ.

XmlLite är inte integrerat med Språkintegrerad fråga (LINQ). Det ger inte de produktivitetsförbättringar för programmerare som är den motiverande kraften bakom LINQ.

Se även