国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

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")

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()) {
...
// 在這里處理每個節(jié)點.
...
}

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>

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.文本數(shù)據(jù)“Chongqing”被讀為類型為XMLNodeType.Text的節(jié)點。數(shù)據(jù)“Chongqing ” 可從XMLTextReader 的Value屬性中取得。

  3.</city>標簽被讀為類型為XMLNodeType.EndElement 節(jié)點。同樣,元素的名稱“city”可從XMLTextReader的Name屬性中獲得。

  這是 3 種重要的節(jié)點類型,其它的類型在.NET的說明文檔中有詳細說明,請大家參閱相關(guān)資料。

  如果XMLTextReader遇到一個錯誤, 例如出現(xiàn)違反XML句法的情況,它拋出一個System.XML.XMLException類型的異常。使用這個類的代碼應(yīng)該總是被保護 ( 在Try……Catch塊中),就像你以后在演示程序中看到的一樣。
  本文只是一篇相當簡單的介紹XMLTextReader 類的文章,XMLTextReader類有相當多的成員,在這里不可能一一述及。當讀入XML數(shù)據(jù)時,XMLTextReader能提供相當強的靈活性。即便如此,我仍然進行了大量的論述,以保證讀者能編制程序來實現(xiàn)現(xiàn)實世界中經(jīng)常要求完成的任務(wù),也就是從一個XML文件讀取數(shù)據(jù)然后以HTML的格式輸出,從而實現(xiàn)在瀏覽器中的顯示。

  這個ASP.NET程序(腳本)在服務(wù)器上運行并產(chǎn)生一個HTML頁面返回瀏覽器。這段腳本程序在代碼段 1 給出,它用來工作使用的 XML 數(shù)據(jù)文件在代碼段 2給出。你能看到這個 XML 文件包含一份表示聯(lián)系關(guān)系的列表;程序的目標即是將這個列表顯示出來,為了更容易我們觀察,這些列表已經(jīng)被格式化了。

  運行程序:

  1. 將代碼段1存為XMLTextReader.ASPx文件,將代碼段2存為XMLData.XML文件。

  2. 把這兩個文件都放在一個已經(jīng)安裝好.NET 框架的網(wǎng)絡(luò)服務(wù)器的虛擬文件夾中。

  3. 打開 Internet Explorer 并且瀏覽這個ASPx文件,例如,在一個局域網(wǎng)服務(wù)器上, URL 將是 http://localhost/xmltextreader.ASPx ;。

  程序工作的大部分都由XMLDisplay 類來做,尤其是被PRocessXML()方法完成的。它每次讀取一個節(jié)點XML數(shù)據(jù),對于感興趣的元素,節(jié)點數(shù)據(jù)和后跟冒號的節(jié)點名將和相應(yīng)的HTML格式化標簽一起寫入輸出結(jié)果中。在這階段,“輸出結(jié)果”由一個HTML文本暫時儲存在其中的StringBuilder對象構(gòu)成。

  ProcessXML()方法是從LoadDocument()方法調(diào)用的。這個方法執(zhí)行的任務(wù)是產(chǎn)生一個XMLTextReader實例化程序并在調(diào)用ProcessXML之前裝載XML文件。它同時也處理異常,隨后產(chǎn)生錯誤的信息并在瀏覽器中顯示出來。最終該方法返回一個字符串,這個字符串或者包含產(chǎn)生的HTML內(nèi)容,或者如果異常發(fā)生的話就包含出錯信息,。

  程序執(zhí)行以Page_Load()程序開始,當瀏覽器請求瀏覽這個頁面時,這一步會自動執(zhí)行。這里的代碼實例化了XMLDisplay 類并調(diào)用它的LoadDocument()方法。如果一切運行正常的話,格式化的HTML形式的返回值將被拷貝到頁面的一個<div>標簽中,生成的HTML文檔被送回到瀏覽器中并顯示出來。

  其他的.NET 框架的類,比如XMLDocument類在讀取XML數(shù)據(jù)方面表現(xiàn)如何呢?XMLDocument 類與XMLTextReader 類不同,它在存儲器中創(chuàng)建整個XML文檔的節(jié)點樹。這樣就可以隨機的獲得XML數(shù)據(jù)(與XMLTextReader 類獲得數(shù)據(jù)的線性方式正好相反),并且在修改XML文件的數(shù)據(jù)和結(jié)構(gòu)時,具有非常完美的靈活性。另外,XMLDocument允許執(zhí)行XSLT 轉(zhuǎn)變,不過,這些額外的功能是以運行速度的降低和系統(tǒng)資源的更多占用為代價的。
  代碼段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://創(chuàng)建XMLTextReader的實例。xmlReader = new XmlTextReader(XmlFileName);
// 處理XML文件html.Append(ProcessXml(xmlReader));
}
catch (XmlException ex){
html.Append("發(fā)生一個XML異常:" + ex.ToString());} 
catch (Exception ex){html.Append("發(fā)生一個普通異常:" + 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() ) {
// 處理一個元素節(jié)點的起始。
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 + ": " );}}
// 處理文本節(jié)點
else if (xmlReader.NodeType == XmlNodeType.Text) 
temp.Append(xmlReader.Value + "<br>");
file://處理元素節(jié)點的結(jié)尾else if (xmlReader.NodeType == XmlNodeType.EndElement) {
file://如果是<email>節(jié)點,添加結(jié)束段落的標記if ( xmlReader.Name == "email" ) temp.Append("</p>"); } }
//結(jié)束while循環(huán)
return temp.ToString();
} file://結(jié)束ProcessXML方法
} file://結(jié)束XmlDisplay類
private void Page_Load(Object sender, EventArgs e){
file://創(chuàng)建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>

 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        }

以上就是XMLTextReader和XmlDocument讀取XML文件的比較的內(nèi)容,更多相關(guān)內(nèi)容請關(guān)注PHP中文網(wǎng)(www.miracleart.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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

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.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

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)

Sujets chauds

Tutoriel PHP
1502
276
XML dans le développement de logiciels: cas d'utilisation et raisons d'adoption XML dans le développement de logiciels: cas d'utilisation et raisons d'adoption Jul 10, 2025 pm 12:14 PM

XmlischosenoveroTherformatsDuetOitsFlexibility, Human-Readabilité, androbustecosystem.1) itExcelsIndataExchangeandConfiguration.2) il est de la platform

XML: Pourquoi les espaces de noms sont-ils nécessaires? XML: Pourquoi les espaces de noms sont-ils nécessaires? Jul 07, 2025 am 12:29 AM

XMLNAMESSPACESSAREESSELANTFORAVOIDINGNAMINGCONFLICTSInXMLDOcuments.EnUsenly IdentifyEtifyElementsandAttributes, permettant à destiner les Names de noms de names usine ou auxtiné les identifiants, 2)

Les caractéristiques clés d'un document XML bien formé Les caractéristiques clés d'un document XML bien formé Jul 12, 2025 am 01:22 AM

Awell formedxmldocumentAdhestospecificruleSenuryCorrectStructure andParseabilité.1) itstartswithaproperdeclarationlike.2) ElementsMustBecorrectlyEnthesweachOveningTaghavingacorRreshingClosingTag.

Le guide ultime du schéma XML: création de XML valide et fiable Le guide ultime du schéma XML: création de XML valide et fiable Jul 08, 2025 am 12:09 AM

XMLSCHEMACANBEEFECTECTIVEDUSEDTOCREATEVALIDANDRELIABLEXMLBYFORMINGTESTESTESPS: 1) DéfinitStructure andDatatypeSofxMlelements, 2) Userestrictions etfacetsfordata

Schéma XML: assurer l'intégrité des données dans les documents XML Schéma XML: assurer l'intégrité des données dans les documents XML Jul 12, 2025 am 12:39 AM

XMLSChemaSinsuresDatainTegrityInxMlDocumentsByDefiningStructureAnForCingrules.1) Itvalidatesdataformats, comme lansurysBnSare10or13Digits.3)

Schéma XML: Exemples en PHP Schéma XML: Exemples en PHP Jul 23, 2025 am 12:27 AM

XmlschemavalidationInphpisachievedUsingDocumentAndDomXpathClasseswithTheLiBxmlextension.1) LoadThexMlfilewithDomDocument.2) utilise le schemavalidateTominyIdateAgainstanxSdsChema, UsedinganExceptionIfVALIDG

Avantages du XML dans l'architecture logicielle: modèles de conception Avantages du XML dans l'architecture logicielle: modèles de conception Jul 09, 2025 am 02:13 AM

Xmlenhancessoftwarearcharchicturebyimprovinghemplementation dedesignPatternslikestrategy, usine, andobserver.1) inthestrategyPattern, xmlallowsruntimestrategyswitchViaconfigurationfiles.2)

Quelles sont les règles de base lors de l'écriture de XML? Quelles sont les règles de base lors de l'écriture de XML? Jul 07, 2025 am 12:34 AM

XML doit suivre les règles de base suivantes: 1. Le document doit commencer par une déclaration et spécifier la version XML; 2. Tous les éléments doivent avoir des balises fermées; 3. Les balises sont sensibles à la casse; 4. Les éléments doivent être correctement imbriqués; 5. Les valeurs d'attribut doivent être enfermées en guillemets; 6. Le document doit avoir un élément racine; Ces règles garantissent que la structure du document XML est claire et facile à analyser et à maintenir.

See all articles