Maison développement back-end Tutoriel XML/RSS Comparaison de XMLTextReader et XmlDocument pour la lecture de fichiers XML

Comparaison de XMLTextReader et XmlDocument pour la lecture de fichiers XML

Feb 28, 2017 pm 04:29 PM

J'ai vu un article sur Internet et je l'ai essayé moi-même. Effectivement, xmlTextReader est plus rapide !

La classe XMLTextReader incluse dans l'espace de noms System.XML du framework .NET peut lire rapidement les données des fichiers XML sans nécessiter de ressources système élevées. Utilisez la classe XMLTextReader pour lire les données des fichiers XML et les convertir au format HTML pour les afficher dans le navigateur.

Avant de lire cet article, les lecteurs doivent comprendre quelques connaissances de base : XML, HTML, langage de programmation C# et une certaine connaissance de .NET, en particulier du framework asp.net.

Le framework .NET de Microsoft offre aux développeurs de nombreuses commodités de développement. Alors que l'importance du XML continue de croître, les développeurs attendent avec impatience le développement d'un ensemble complet d'outils XML puissants. Le framework .NET a répondu à nos attentes et a organisé les classes suivantes pour XML dans l'espace de noms System.XML :

XMLTextReader------fournit un accès rapide et unidirectionnel aux données XML dans un format sans tampon. manière. (Un sens signifie que vous ne pouvez lire le fichier XML que d'avant en arrière, mais pas à l'envers)

XMLValidatingReader------Utilisé avec la classe XMLTextReader, il permet la validation des DTD, XDR et XSD capacité de schémas.

XMLDocument------suit les normes primaires et secondaires de la spécification W3C Document Object Model pour obtenir un accès aléatoire et mis en cache aux données XML. Le premier niveau contient les parties les plus élémentaires du DOM, tandis que le deuxième niveau ajoute une variété d'améliorations, notamment la prise en charge des espaces de noms et des diagrammes en cascade (CSS).

XMLTextWriter------Générer des fichiers XML conformes à la spécification W3C XML 1.0.

Cet article parle principalement de la première classe XMLTextReader. Le but de cette classe est de lire rapidement les données des fichiers XML sans nécessiter de ressources système élevées (y compris principalement des exigences en matière de mémoire et de temps processeur). Sous le contrôle du programme parent, il implémente ce processus de travail en exploitant progressivement le fichier XML en traitant un seul nœud à la fois. Dans chaque nœud du fichier XML, le programme parent peut déterminer le type du nœud, ses attributs et données (le cas échéant), ainsi que d'autres informations sur le nœud. Sur la base de ces informations, le programme parent peut choisir de traiter ce nœud ou d'ignorer les informations du nœud pour répondre aux besoins des diverses demandes d'application. C'est ce qu'on appelle le modèle de traitement pull car le programme parent effectue la requête et extrait les nœuds individuels du fichier XML, puis le traite ou ne le traite pas selon les besoins.
Nous pouvons comparer la classe XMLTextReader avec la XML Simple Application Programming Interface, ou SAX, qui est une autre technologie de lecture de données XML très populaire parmi les programmeurs. XMLTextReader et SAX sont très similaires dans le sens où ils peuvent lire rapidement les données des fichiers XML sans utiliser beaucoup de ressources système. Cependant, contrairement au modèle d'extraction de XMLTextReader, SAX utilise un modèle push : le processeur XML utilise des « événements » pour informer l'application hôte quelles données de nœud sont disponibles et lesquelles ne peuvent pas être obtenues selon les besoins, le programme hôte réagit en conséquence ou les ignore ; . En d'autres termes, les données sont transmises du gestionnaire SAX vers l'hôte. Les programmeurs se demanderont forcément si les modèles de traitement extractible ou push-in présentent plus d'avantages, mais il est indéniable que les deux modèles fonctionnent bien. Le .NET Framework ne prend pas en charge SAX, mais vous pouvez utiliser les outils SAX existants, tels que l'analyseur MSXML, avec vos applications .NET.

La classe XMLTextReader possède des constructeurs pour s'adapter à diverses situations, telles que la lecture de données à partir d'un flux de données existant ou d'un Uniform Resource Locator. Le plus souvent, vous souhaiterez peut-être lire des données XML à partir d'un fichier, et il existe un constructeur correspondant pour le faire. Voici un exemple (tous mes exemples de code sont en C#, ils sont faciles à convertir si vous préférez utiliser VISUAL BASIC).

XMLTextReader myReader;
myReader = New XMLTextReader("c:\data\sales.XML")
Copier après la connexion

Créez une boucle appelée méthode Read(). La valeur de retour de cette méthode est toujours vraie jusqu'à ce que le bas du fichier soit atteint, lorsque la valeur de retour devient fausse. En d'autres termes, la boucle commence au début du fichier et lit dans tous les nœuds, un à la fois, jusqu'à ce qu'elle atteigne la fin du fichier :

While (myReader.Read()) {
...
// 在这里处理每个节点.
...
}
Copier après la connexion

Après chaque appel réussi à Read() , l'instance XMLTextReader L'optimiseur contient des informations sur le nœud actuel (c'est-à-dire le nœud qui vient de lire le fichier). Nous pouvons obtenir les informations ci-dessus auprès des membres de XMLTextReader, comme décrit dans le tableau 1 et déterminer le type du nœud actuel via l'attribut NodeType ; En fonction du type de nœud, le code du programme peut lire les données du nœud, vérifier s'il possède des attributs et s'il doit les ignorer ou effectuer les opérations et traitements correspondants en fonction des besoins du programme.

Lors de l'utilisation de l'attribut NodeType, il est important de comprendre comment les nœuds sont liés aux unités XML. Par exemple, regardez l'élément XML suivant :

<city>Chongqing</city>
Copier après la connexion

XMLtextReader traite cet élément comme 3 nœuds, dans l'ordre suivant :

1. La balise est lue comme un nœud de type XMLNodeType.Element. Le nom de l'élément "city" peut être obtenu à partir de l'attribut Name de XMLTextReader.

  2.文本数据“Chongqing”被读为类型为XMLNodeType.Text的节点。数据“Chongqing ” 可从XMLTextReader 的Value属性中取得。

  3.</city>标签被读为类型为XMLNodeType.EndElement 节点。同样,元素的名称“city”可从XMLTextReader的Name属性中获得。

  这是 3 种重要的节点类型,其它的类型在.NET的说明文档中有详细说明,请大家参阅相关资料。

  如果XMLTextReader遇到一个错误, 例如出现违反XML句法的情况,它抛出一个System.XML.XMLException类型的异常。使用这个类的代码应该总是被保护 ( 在Try……Catch块中),就像你以后在演示程序中看到的一样。
  本文只是一篇相当简单的介绍XMLTextReader 类的文章,XMLTextReader类有相当多的成员,在这里不可能一一述及。当读入XML数据时,XMLTextReader能提供相当强的灵活性。即便如此,我仍然进行了大量的论述,以保证读者能编制程序来实现现实世界中经常要求完成的任务,也就是从一个XML文件读取数据然后以HTML的格式输出,从而实现在浏览器中的显示。

  这个ASP.NET程序(脚本)在服务器上运行并产生一个HTML页面返回浏览器。这段脚本程序在代码段 1 给出,它用来工作使用的 XML 数据文件在代码段 2给出。你能看到这个 XML 文件包含一份表示联系关系的列表;程序的目标即是将这个列表显示出来,为了更容易我们观察,这些列表已经被格式化了。

  运行程序:

  1. 将代码段1存为XMLTextReader.ASPx文件,将代码段2存为XMLData.XML文件。

  2. 把这两个文件都放在一个已经安装好.NET 框架的网络服务器的虚拟文件夹中。

  3. 打开 Internet Explorer 并且浏览这个ASPx文件,例如,在一个局域网服务器上, URL 将是 http://localhost/xmltextreader.ASPx ;。

  程序工作的大部分都由XMLDisplay 类来做,尤其是被PRocessXML()方法完成的。它每次读取一个节点XML数据,对于感兴趣的元素,节点数据和后跟冒号的节点名将和相应的HTML格式化标签一起写入输出结果中。在这阶段,“输出结果”由一个HTML文本暂时储存在其中的StringBuilder对象构成。

  ProcessXML()方法是从LoadDocument()方法调用的。这个方法执行的任务是产生一个XMLTextReader实例化程序并在调用ProcessXML之前装载XML文件。它同时也处理异常,随后产生错误的信息并在浏览器中显示出来。最终该方法返回一个字符串,这个字符串或者包含产生的HTML内容,或者如果异常发生的话就包含出错信息,。

  程序执行以Page_Load()程序开始,当浏览器请求浏览这个页面时,这一步会自动执行。这里的代码实例化了XMLDisplay 类并调用它的LoadDocument()方法。如果一切运行正常的话,格式化的HTML形式的返回值将被拷贝到页面的一个<div>标签中,生成的HTML文档被送回到浏览器中并显示出来。

  其他的.NET 框架的类,比如XMLDocument类在读取XML数据方面表现如何呢?XMLDocument 类与XMLTextReader 类不同,它在存储器中创建整个XML文档的节点树。这样就可以随机的获得XML数据(与XMLTextReader 类获得数据的线性方式正好相反),并且在修改XML文件的数据和结构时,具有非常完美的灵活性。另外,XMLDocument允许执行XSLT 转变,不过,这些额外的功能是以运行速度的降低和系统资源的更多占用为代价的。
  代码段1:XmlTextReader.aspx

<%@ Import Namespace="System.Xml" %>
<script language="C#" runat=server>
public class XmlDisplayfile://这个类读入并处理XML文件。{
public string LoadDocument(String XmlFileName) {
XmlTextReader xmlReader = null;
StringBuilder html = new StringBuilder();
try {
file://创建XMLTextReader的实例。xmlReader = new XmlTextReader(XmlFileName);
// 处理XML文件html.Append(ProcessXml(xmlReader));
}
catch (XmlException ex){
html.Append("发生一个XML异常:" + ex.ToString());} 
catch (Exception ex){html.Append("发生一个普通异常:" + ex.ToString());} 
finally {if (xmlReader != null)xmlReader.Close();}return html.ToString();}
private string ProcessXml(XmlTextReader xmlReader) 
{StringBuilder temp = new StringBuilder();
file://这个方法读入XML文件并生成输出的HTML文档。
while ( xmlReader.Read() ) {
// 处理一个元素节点的起始。
if (xmlReader.NodeType == XmlNodeType.Element) { 
file://忽略<people>和<person>元素if ((xmlReader.Name != "person") && (xmlReader.Name != "people")) 
{file://如果是一个<category>元素,开始一个新的段落if ( xmlReader.Name == "category" )temp.Append("<p>");
file://添加元素名到输出中temp.Append( xmlReader.Name + ": " );}}
// 处理文本节点
else if (xmlReader.NodeType == XmlNodeType.Text) 
temp.Append(xmlReader.Value + "<br>");
file://处理元素节点的结尾else if (xmlReader.NodeType == XmlNodeType.EndElement) {
file://如果是<email>节点,添加结束段落的标记if ( xmlReader.Name == "email" ) temp.Append("</p>"); } }
//结束while循环
return temp.ToString();
} file://结束ProcessXML方法
} file://结束XmlDisplay类
private void Page_Load(Object sender, EventArgs e){
file://创建XmlDisplay类的实例XmlDisplay XmlDisplayDemo = new XmlDisplay();
output.InnerHtml = XmlDisplayDemo.LoadDocument(Server.MapPath("XMLData.xml"));
}</script><html><head></head><body><h2>演示XmlTextReader类</h2>
<div id="output" runat="server"/></body></html>
Copier après la connexion

 1    static void Main(string[] args)
 2        {
 3            DateTime d1 =DateTime.Now;
 4            XmlDocumentTest();
 5            DateTime d2 =DateTime.Now;
 6            TimeSpan ts =d2-d1 ;
 7            
 8            Console.WriteLine(ts.TotalMilliseconds) ;    
 9            Console.Read() ;
10
11        }
12
13
14        public static string XmlFileName = "../../XML/1.xml";
15        
16        private static void XmlTextReaderTest()
17        {
18            XmlTextReader reader = new XmlTextReader(XmlFileName);
19            while (reader.Read() )
20            {
21                bool exit =false;
22                switch(reader.NodeType)
23                {
24                    case XmlNodeType.Element :
25                        break;
26                    case XmlNodeType.Text :
27                        if (reader.Value=="last")
28                        {
29                            exit=true;
30                        }
31                        break;
32                    case XmlNodeType.EndElement  :
33                        break;
34                    default:
35                        break;
36                }
37                if(exit)
38                {
39                    return;
40                    
41                }
42
43            }
44        }
45
46        private static void XmlDocumentTest()
47        {
48            XmlDocument xd =new XmlDocument() ;
49            xd.Load(XmlFileName) ;
50            XmlNode node = xd.SelectSingleNode("/people/person[category='last']"); 
51            Console.Write(node.Name) ; 
52        }
Copier après la connexion

以上就是XMLTextReader和XmlDocument读取XML文件的比较的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

La vitesse de conversion est-elle rapide lors de la conversion du XML en PDF sur le téléphone mobile? La vitesse de conversion est-elle rapide lors de la conversion du XML en PDF sur le téléphone mobile? Apr 02, 2025 pm 10:09 PM

La vitesse du XML mobile à PDF dépend des facteurs suivants: la complexité de la structure XML. Méthode de conversion de configuration du matériel mobile (bibliothèque, algorithme) Méthodes d'optimisation de la qualité du code (sélectionnez des bibliothèques efficaces, optimiser les algorithmes, les données de cache et utiliser le multi-threading). Dans l'ensemble, il n'y a pas de réponse absolue et elle doit être optimisée en fonction de la situation spécifique.

Comment convertir les fichiers XML en PDF sur votre téléphone? Comment convertir les fichiers XML en PDF sur votre téléphone? Apr 02, 2025 pm 10:12 PM

Il est impossible de terminer la conversion XML à PDF directement sur votre téléphone avec une seule application. Il est nécessaire d'utiliser les services cloud, qui peuvent être réalisés via deux étapes: 1. Convertir XML en PDF dans le cloud, 2. Accédez ou téléchargez le fichier PDF converti sur le téléphone mobile.

Comment convertir XML en PDF sur votre téléphone? Comment convertir XML en PDF sur votre téléphone? Apr 02, 2025 pm 10:18 PM

Il n'est pas facile de convertir XML en PDF directement sur votre téléphone, mais il peut être réalisé à l'aide des services cloud. Il est recommandé d'utiliser une application mobile légère pour télécharger des fichiers XML et recevoir des PDF générés, et de les convertir avec des API Cloud. Les API Cloud utilisent des services informatiques sans serveur et le choix de la bonne plate-forme est crucial. La complexité, la gestion des erreurs, la sécurité et les stratégies d'optimisation doivent être prises en compte lors de la gestion de l'analyse XML et de la génération de PDF. L'ensemble du processus nécessite que l'application frontale et l'API back-end fonctionnent ensemble, et il nécessite une certaine compréhension d'une variété de technologies.

Outil de mise en forme XML recommandé Outil de mise en forme XML recommandé Apr 02, 2025 pm 09:03 PM

Les outils de mise en forme XML peuvent taper le code en fonction des règles pour améliorer la lisibilité et la compréhension. Lors de la sélection d'un outil, faites attention aux capacités de personnalisation, en gérant des circonstances spéciales, des performances et de la facilité d'utilisation. Les types d'outils couramment utilisés incluent des outils en ligne, des plug-ins IDE et des outils de ligne de commande.

Comment ouvrir le format XML Comment ouvrir le format XML Apr 02, 2025 pm 09:00 PM

Utiliser la plupart des éditeurs de texte pour ouvrir des fichiers XML; Si vous avez besoin d'un affichage d'arbre plus intuitif, vous pouvez utiliser un éditeur XML, tel que Oxygen XML Editor ou XMLSPY; Si vous traitez les données XML dans un programme, vous devez utiliser un langage de programmation (tel que Python) et des bibliothèques XML (telles que XML.ETREE.ElementTree) pour analyser.

Y a-t-il une application mobile qui peut convertir XML en PDF? Y a-t-il une application mobile qui peut convertir XML en PDF? Apr 02, 2025 pm 08:54 PM

Une application qui convertit le XML directement en PDF ne peut être trouvée car ce sont deux formats fondamentalement différents. XML est utilisé pour stocker des données, tandis que PDF est utilisé pour afficher des documents. Pour terminer la transformation, vous pouvez utiliser des langages de programmation et des bibliothèques telles que Python et ReportLab pour analyser les données XML et générer des documents PDF.

Formatage en ligne XML Formatage en ligne XML Apr 02, 2025 pm 10:06 PM

Les outils de format en ligne XML organisent automatiquement le code XML désordonné en formats faciles à lire et à maintenir. En analysant l'arbre de syntaxe de XML et en appliquant des règles de formatage, ces outils optimisent la structure du code, améliorant sa maintenabilité et son efficacité de travail d'équipe.

Comment contrôler la couleur de XML converti en images? Comment contrôler la couleur de XML converti en images? Apr 02, 2025 pm 08:03 PM

Pour convertir le XML en images et contrôler les couleurs, vous devez utiliser un programme pour convertir les données XML en couleurs, formes et dispositions de pixels. La clé du contrôle des couleurs est la façon dont le programme interprète les données XML et la convertit en couleur. Les attributs de couleur dans XML peuvent être affectés aux éléments correspondants à l'aide de cartes de couleur, mais pour des structures XML plus complexes, des algorithmes plus sophistiqués sont nécessaires pour déterminer les couleurs en fonction de la taille, de la plage ou du type des données. Les bibliothèques graphiques plus avancées peuvent également fournir des options de contrôle des couleurs plus puissantes, et l'optimisation est la clé des considérations de performances pour les fichiers volumineux.

See all articles