


Comparaison des performances des méthodes de lecture de données XML (1)
Ces derniers mois, je me suis occupé d'opérations XML dues à SOA, et j'ai presque tout oublié de SQL. On sait désormais qu'il existe au moins quatre méthodes de manipulation de données XML couramment utilisées (similaires à Java), mais les caractéristiques, avantages et inconvénients de chacune de ces méthodes n'ont pas réellement été comparés. Il m'est arrivé de constater qu'il n'y avait pas d'expériences dans ce domaine sur Internet, je vais donc le résumer.
Au début du test, lisez d'abord la source XML, utilisez un lien de fichier rss relativement volumineux et copiez-le dans le répertoire bin/debug du projet.
Stream xmlStream = new MemoryStream(File.ReadAllBytes(path));
1. Méthode XmlDocument
Code
1 static IList testXmlDocument() 2 { 3 var doc = new XmlDocument(); 4 doc.Load(xmlStream); 5 var nodeList = doc.DocumentElement.ChildNodes; 6 var lstChannel = new List<Object>(nodeList.Count ); 7 foreach (XmlNode node in nodeList) 8 { 9 var channel = new 10 { 11 Title = node.SelectSingleNode("title").InnerText, 12 Link = node.SelectSingleNode("link").InnerText, 13 Description = node.SelectSingleNode("description").InnerText, 14 Content = node.SelectSingleNode("content").InnerText, 15 PubDate = node.SelectSingleNode("pubDate").InnerText, 16 Author = node.SelectSingleNode("author").InnerText, 17 Category = node.SelectSingleNode("category").InnerText 18 }; 19 lstChannel.Add(channel); 20 } 21 return lstChannel; 22 }
2. Méthode XPathNavigator
Code
1 static IList testXmlNavigator() 2 { 3 var doc = new XmlDocument(); 4 doc.Load(xmlStream); 5 var nav = doc.CreateNavigator(); 6 nav.MoveToRoot(); 7 var nodeList = nav.Select("/channel/item"); 8 var lstChannel = new List<Object>(nodeList.Count); 9 foreach (XPathNavigator node in nodeList) 10 { 11 var channel = new 12 { 13 Title = node.SelectSingleNode("title").Value, 14 Link = node.SelectSingleNode("link").Value, 15 Description = node.SelectSingleNode("description").Value, 16 Content = node.SelectSingleNode("content").Value, 17 PubDate = node.SelectSingleNode("pubDate").Value, 18 Author = node.SelectSingleNode("author").Value, 19 Category = node.SelectSingleNode("category").Value 20 }; 21 lstChannel.Add(channel); 22 } 23 return lstChannel; 24 }
3. Méthode XmlTextReader
Code
1 static List<Channel> testXmlReader() 2 { 3 var lstChannel = new List<Channel>(); 4 var reader = XmlReader.Create(xmlStream); 5 while (reader.Read()) 6 { 7 if (reader.Name == "item" && reader.NodeType == XmlNodeType.Element) 8 { 9 var channel = new Channel(); 10 lstChannel.Add(channel); 11 while (reader.Read()) 12 { 13 if (reader.Name == "item") break; 14 if (reader.NodeType != XmlNodeType.Element) continue; 15 switch (reader.Name) 16 { 17 case "title": 18 channel.Title = reader.ReadString(); 19 break; 20 case "link": 21 channel.Link = reader.ReadString(); 22 break; 23 case "description": 24 channel.Description = reader.ReadString(); 25 break; 26 case "content": 27 channel.Content = reader.ReadString(); 28 break; 29 case "pubDate": 30 channel.PubDate = reader.ReadString(); 31 break; 32 case "author": 33 channel.Author = reader.ReadString(); 34 break; 35 case "category": 36 channel.Category = reader.ReadString(); 37 break; 38 default: 39 break; 40 } 41 } 42 } 43 } 44 return lstChannel; 45 }
4. Linq to Méthode XML
code
1 static IList testXmlLinq() 2 { 3 var xd = XDocument.Load(xmlStream); 4 var list = from node in xd.Elements("channel").Descendants("item") 5 select new 6 { 7 Title = node.Element("title").Value, 8 Link = node.Element("link").Value, 9 Description = node.Element("description").Value, 10 Content = node.Element("content").Value, 11 PubDate = node.Element("pubDate").Value, 12 Author = node.Element("author").Value, 13 Category = node.Element("category").Value 14 }; 15 return list.ToList(); 16 }
Résultats des tests :
XmlDocment 47ms XPathNavigator 42ms XmlTextReader 23ms Xml Linq 28ms
Pour résumer ma compréhension, XmlDocument Le fonctionnement suit essentiellement la méthode de fonctionnement du W3C DOM, mais tous les nœuds doivent être analysés en objets et chargés en mémoire, ce qui entraîne souvent beaucoup de gaspillage. Par conséquent, les propres normes de programmation de Microsoft ne recommandent pas son utilisation. Puisque tous les nœuds sont lus ici, les performances peuvent ne pas être très différentes de celles de la méthode Navigator. Parmi les trois méthodes de lecture aléatoire, Xml Linq a les performances les plus élevées, mais le nom de la méthode est un peu gênant. La méthode XmlTextReader est ce qu'on appelle SAX, qui est en lecture seule et offre les performances les plus élevées. Cependant, sa mise en œuvre est très difficile. La logique d'accès doit être contrôlée avec plus de précision et les classes anonymes ne peuvent pas être utilisées pour le stockage. données.
La version .Net 3.5 Xml Linq peut très bien remplacer les deux premières méthodes, dans des circonstances normales, il est préférable de l'utiliser. Seulement dans certains cas, si les exigences de performances sont extrêmement élevées ou si la quantité de données XML à lire est trop importante pour être téléchargée ou lue dans la mémoire en une seule fois, vous devez alors vous engager envers XmlTextReader.
Ce qui précède est la comparaison des performances des méthodes de lecture de données XML (1). Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Les fichiers XML peuvent-ils être ouverts avec PPT ? XML, Extensible Markup Language (Extensible Markup Language), est un langage de balisage universel largement utilisé dans l'échange et le stockage de données. Comparé au HTML, XML est plus flexible et peut définir ses propres balises et structures de données, rendant le stockage et l'échange de données plus pratiques et unifiés. PPT, ou PowerPoint, est un logiciel développé par Microsoft pour créer des présentations. Il fournit un moyen complet de

Utilisation de Python pour fusionner et dédupliquer des données XML XML (eXtensibleMarkupLanguage) est un langage de balisage utilisé pour stocker et transmettre des données. Lors du traitement de données XML, nous devons parfois fusionner plusieurs fichiers XML en un seul ou supprimer les données en double. Cet article explique comment utiliser Python pour implémenter la fusion et la déduplication de données XML, et donne des exemples de code correspondants. 1. Fusion de données XML Lorsque nous avons plusieurs fichiers XML, nous devons les fusionner

Implémentation du filtrage et du tri des données XML à l'aide de Python Introduction : XML est un format d'échange de données couramment utilisé qui stocke les données sous forme de balises et d'attributs. Lors du traitement de données XML, nous devons souvent filtrer et trier les données. Python fournit de nombreux outils et bibliothèques utiles pour traiter les données XML. Cet article explique comment utiliser Python pour filtrer et trier les données XML. Lecture du fichier XML Avant de commencer, nous devons lire le fichier XML. Python possède de nombreuses bibliothèques de traitement XML,

Convertir des données XML en Python au format CSV XML (ExtensibleMarkupLanguage) est un langage de balisage extensible couramment utilisé pour le stockage et la transmission de données. CSV (CommaSeparatedValues) est un format de fichier texte délimité par des virgules couramment utilisé pour l'importation et l'exportation de données. Lors du traitement des données, il est parfois nécessaire de convertir les données XML au format CSV pour faciliter l'analyse et le traitement. Python est un puissant

Importation de données XML dans la base de données à l'aide de PHP Introduction : Pendant le développement, nous devons souvent importer des données externes dans la base de données pour un traitement et une analyse ultérieurs. En tant que format d'échange de données couramment utilisé, XML est souvent utilisé pour stocker et transmettre des données structurées. Cet article explique comment utiliser PHP pour importer des données XML dans une base de données. Étape 1 : analyser le fichier XML Tout d'abord, nous devons analyser le fichier XML et extraire les données requises. PHP propose plusieurs façons d'analyser XML, la plus couramment utilisée étant l'utilisation de Simple

Python implémente la conversion entre XML et JSON Introduction : Dans le processus de développement quotidien, nous devons souvent convertir des données entre différents formats. XML et JSON sont des formats d'échange de données courants. En Python, nous pouvons utiliser diverses bibliothèques pour réaliser une conversion mutuelle entre XML et JSON. Cet article présentera plusieurs méthodes couramment utilisées, avec des exemples de code. 1. Pour convertir XML en JSON en Python, nous pouvons utiliser le module xml.etree.ElementTree

Gestion des erreurs et des exceptions dans XML à l'aide de Python XML est un format de données couramment utilisé pour stocker et représenter des données structurées. Lorsque nous utilisons Python pour traiter XML, nous pouvons parfois rencontrer des erreurs et des exceptions. Dans cet article, je vais vous présenter comment utiliser Python pour gérer les erreurs et les exceptions dans XML, et fournir un exemple de code pour référence. Utilisez l'instruction try-sauf pour détecter les erreurs d'analyse XML Lorsque nous utilisons Python pour analyser XML, nous pouvons parfois rencontrer des

Python analyse les caractères spéciaux et les séquences d'échappement en XML XML (eXtensibleMarkupLanguage) est un format d'échange de données couramment utilisé pour transférer et stocker des données entre différents systèmes. Lors du traitement de fichiers XML, vous rencontrez souvent des situations contenant des caractères spéciaux et des séquences d'échappement, qui peuvent provoquer des erreurs d'analyse ou une mauvaise interprétation des données. Par conséquent, lors de l’analyse de fichiers XML à l’aide de Python, nous devons comprendre comment gérer ces caractères spéciaux et ces séquences d’échappement. 1. Caractères spéciaux et
