LINQ to XML im Vergleich zu anderen XML-TechnologienLINQ to XML vs. Other XML Technologies

In diesem Thema wird LINQ to XML mit den folgenden XML-Technologien verglichen: XmlReader, XSLT, MSXML und XmlLite.This topic compares LINQ to XML to the following XML technologies: XmlReader, XSLT, MSXML, and XmlLite. Diese Informationen helfen Ihnen bei Ihrer Entscheidung für eine dieser Technologien.This information can help you decide which technology to use.

Einen Vergleich von LINQ to XML mit dem Dokumentobjektmodell (DOM) finden Sie unter LINQ to XML im Vergleich zu DOM (C#).For a comparison of LINQ to XML to the Document Object Model (DOM), see LINQ to XML vs. DOM (C#).

LINQ to XML im Vergleich zu XmlReaderLINQ to XML vs. XmlReader

XmlReader ist ein schneller Parser, der ausschließlich in Vorwärtsrichtung und ohne Zwischenspeicherung arbeitet.XmlReader is a fast, forward-only, non-caching parser.

LINQ to XML wird über XmlReader implementiert. Beide sind eng ineinander integriert. is implemented on top of XmlReader, and they are tightly integrated. Sie können XmlReader jedoch auch allein verwenden.However, you can also use XmlReader by itself.

Stellen Sie sich z. B. vor, Sie erstellen einen Internetdienst, der pro Sekunde Hunderte von XML-Dokumenten analysiert. Wenn alle Dokumente dieselbe Struktur aufweisen, müssen Sie zum Analysieren der XML-Dokumente nur eine einzige Implementierung schreiben.For example, suppose you are building a Web service that will parse hundreds of XML documents per second, and the documents have the same structure, meaning that you only have to write one implementation of the code to parse the XML. In diesem Fall ist es wahrscheinlich, dass Sie XmlReader allein verwenden möchten.In this case, you would probably want to use XmlReader by itself.

Wenn Sie aber ein System erstellen, dass viele kleinere XML-Dokumente analysiert, die alle unterschiedlich sind, empfiehlt sich die Nutzung der höheren Produktivität, die LINQ to XML ermöglicht.In contrast, if you are building a system that parses many smaller XML documents, and each one is different, you would want to take advantage of the productivity improvements that LINQ to XML provides.

LINQ to XML im Vergleich zu XSLTLINQ to XML vs. XSLT

Sowohl LINQ to XML als auch XSLT bieten umfangreiche Funktionen zum Transformieren von XML-Dokumenten.Both LINQ to XML and XSLT provide extensive XML document transformation capabilities. XSLT ist ein regelbasierter, deklarativer Ansatz.XSLT is a rule-based, declarative approach. Erfahrene XSLT-Programmierer schreiben XSLT-Code unter Verwendung eines funktionalen Programmierstils, bei dem der zustandslose Ansatz im Vordergrund steht.Advanced XSLT programmers write XSLT in a functional programming style that emphasizes a stateless approach. Transformationen können mit reinen Funktionen geschrieben werden, die ohne Nebeneffekte implementiert werden.Transformations can be written using pure functions that are implemented without side effects. Dieser regelbasierte oder funktionale Ansatz ist vielen Entwicklern nicht bekannt, und das Erlernen dieses Ansatzes kann schwierig und zeitaufwändig sein.This rule-based or functional approach is unfamiliar to many developers, and can be difficult and time-consuming to learn.

XSLT kann ein sehr produktives System sein, das leistungsstarke Anwendungen erbringt.XSLT can be a very productive system that yields high-performance applications. Einige große Internetunternehmen verwenden XSLT beispielsweise als Möglichkeit, HTML-Daten aus XML-Code zu generieren, der aus verschiedenen Datenspeichern zusammengestellt wird.For example, some big Web companies use XSLT as a way to generate HTML from XML that has been pulled from a variety of data stores. Das verwaltete XSLT-Modul kompiliert XSLT in CLR-Code und erweist sich in einigen Szenarios sogar als leistungsfähiger als das systemeigene XSLT-Modul.The managed XSLT engine compiles XSLT to CLR code, and performs even better in some scenarios than the native XSLT engine.

Fakt ist aber, dass Entwickler bei Verwendung von XSLT nicht auf das vorhandene C#- und Visual Basic-Wissen zurückgreifen können.However, XSLT does not take advantage of the C# and Visual Basic knowledge that many developers have. Stattdessen müssen sie Code in einer anderen und komplexen Programmiersprache schreiben.It requires developers to write code in a different and complex programming language. Die Verwendung zweier nicht integrierter Entwicklungssysteme, wie C# (oder Visual Basic) und XSLT, führt zu Softwaresystemen, die schwieriger zu entwickeln und zu verwalten sind.Using two non-integrated development systems such as C# (or Visual Basic) and XSLT results in software systems that are more difficult to develop and maintain.

Wenn Sie die LINQ to XML-Abfrageausdrücke erst einmal verstanden haben, bieten LINQ to XML-Transformationen eine leistungsstarke und einfach zu handhabende Technologie.After you have mastered LINQ to XML query expressions, LINQ to XML transformations are a powerful technology that is easy to use. Im Wesentlichen formen Sie Ihr XML-Dokument, indem Sie die funktionale Konstruktion verwenden, Daten aus verschiedenen Quellen herausziehen, dynamisch XElement-Objekte erstellen und das Ganze dann zu einer neuen XML-Struktur zusammensetzen.Basically, you form your XML document by using functional construction, pulling in data from various sources, constructing XElement objects dynamically, and assembling the whole into a new XML tree. Die Transformation kann ein vollkommen neues Dokument zum Ergebnis haben.The transformation can generate a completely new document. Das Konstruieren von Transformationen in LINQ to XML ist relativ einfach und intuitiv, und der resultierende Code ist lesbar.Constructing transformations in LINQ to XML is relatively easy and intuitive, and the resulting code is readable. Dies trägt zu geringeren Entwicklungs- und Wartungskosten bei.This reduces development and maintenance costs.

LINQ to XML ist nicht dazu gedacht, XSLT zu ersetzen. is not intended to replace XSLT. XSLT ist für komplizierte und dokumentorientierte XML-Transformationen immer noch die beste Option. Dies gilt insbesondere dann, wenn die Struktur des Dokuments nicht gut definiert ist.XSLT is still the tool of choice for complicated and document-centric XML transformations, especially if the structure of the document is not well defined.

XSLT hat den Vorteil, ein World Wide Web Consortium (W3C)-Standard zu sein.XSLT has the advantage of being a World Wide Web Consortium (W3C) standard. Wenn bei Ihnen die Anforderung besteht, ausschließlich Standardtechnologien zu verwenden, ist XSLT möglicherweise das Richtige für Sie.If you have a requirement that you use only technologies that are standards, XSLT might be more appropriate.

XSLT ist XML und kann daher programmgesteuert bearbeitet werden.XSLT is XML, and therefore can be programmatically manipulated.

LINQ to XML im Vergleich zu MSXMLLINQ to XML vs. MSXML

MSXML ist die COM-basierte Technologie für die XML-Verarbeitung in Microsoft Windows.MSXML is the COM-based technology for processing XML that is included with Microsoft Windows. MSXML stellt eine systemeigene Implementierung des DOM mit Unterstützung für XPath und XSLT bereit.MSXML provides a native implementation of the DOM with support for XPath and XSLT. Darüber hinaus enthält MSXML den ereignisbasierten, ohne Zwischenspeicherung arbeitenden Parser SAX2.It also contains the SAX2 non-caching, event-based parser.

MSXML zeigt eine gute Leistung und ist in den meisten Szenarios standardmäßig sicher. Auf MSXML kann in Internet Explorer zugegriffen werden, sodass eine clientseitige XML-Verarbeitung in AJAX-Anwendungen erfolgen kann.MSXML performs well, is secure by default in most scenarios, and can be accessed in Internet Explorer for performing client-side XML processing in AJAX-style applications. MSXML kann von jeder Programmiersprache aus verwendet werden, die COM unterstützt, wie z. B. C++, JavaScripts und Visual BasicVisual Basic 6.0.MSXML can be used from any programming language that supports COM, including C++, JavaScript, and Visual BasicVisual Basic 6.0.

Von der Verwendung von MSXML in verwaltetem Code, der auf der Common Language Runtime (CLR) basiert, wird abgeraten.MSXML is not recommended for use in managed code based on the common language runtime (CLR).

LINQ to XML im Vergleich zu XmlLiteLINQ to XML vs. XmlLite

XmlLite ist ein Pull-Parser, der ausschließlich in Vorwärtsrichtung und ohne Zwischenspeicherung arbeitet.XmlLite is a non-caching, forward only, pull parser. Entwickler verwenden XmlLite hauptsächlich zusammen mit C++.Developers primarily use XmlLite with C++. Es wird nicht empfohlen, XmlLite mit verwaltetem Code zu verwenden.It is not recommended for developers to use XmlLite with managed code.

Der Hauptvorteil von XmlLite besteht darin, dass er ein leichter, schneller XML-Parser ist, der in den meisten Szenarios sicher ist.The main advantage of XmlLite is that it is a lightweight, fast XML parser that is secure in most scenarios. Seine Angriffsfläche ist sehr klein.Its threat surface area is very small. Wenn Sie nicht vertrauenswürdige Dokumente analysieren müssen und sich vor Risiken, wie DoS-Angriffen oder der Offenlegung von Daten, schützen möchten, könnte XmlLite ein geeignetes Mittel der Wahl sein.If you have to parse untrusted documents and you want to protect against attacks such as denial of service or exposure of data, XmlLite might be a good option.

XmlLite ist nicht in Language-Integrated Query (LINQ)Language-Integrated Query (LINQ) integriert.XmlLite is not integrated with Language-Integrated Query (LINQ)Language-Integrated Query (LINQ). Die Produktivitätsverbesserungen für Programmierer, die zu den großen Vorteilen von LINQLINQ gehören, können mit XmlLite nicht erzielt werden.It does not yield the programmer productivity improvements that are the motivating force behind LINQLINQ.

Siehe auchSee Also

Erste Schritte (LINQ to XML)Getting Started (LINQ to XML)