首页 后端开发 C#.Net教程 在.NET Framework中轻松处理XML数据(1-2)

在.NET Framework中轻松处理XML数据(1-2)

Dec 20, 2016 pm 02:02 PM
.net framework xml数据

?XmlReader类 

??XML浏览器支撑一个编程接口,接口用于连接XML文档,“推出”你要的数据。假如你更深进往懂得浏览器,你会发明浏览器工作原理类似于我们的桌面利用程序从数据库中取出数据的原理。数据库服务返回一个游标对象,它包含所有查询成果集,并返回指向目标数据集的开端地址的引用。XML浏览器的客户端收到一个指向浏览器实例的引用。该实例提取底层的数据流并把取出的数据浮现为一棵XML树。浏览器类供给只读、向前的游标,你可以用浏览器类供给的方法转动游标遍历成果集中的每一条数据。 

??从浏览器中看XML文档不是一个标签文本文件,而是一个序列化的节点聚集。它是.NET Framework中的一种特别的游标模式;在.NET Framework中,你找不到其它的任何一个类似的API函数。 

??浏览器和XMLDOM分析器有几点不同的处所。XML浏览器是只进的,它没有父、子、祖宗、兄弟节点的概念,而且是只读的。在.NET Framework中,读写XML文档是分为两种完整不同的功效,分辨由XmlReader和XmlWriter类来完成。要编纂XML文档,你可以用XMLDOM分析器,或者你自己设计一个类来实现这两种功效。让我们开端分析浏览器的程序功效。 

??XmlReader是一个抽象类,你可以持续并扩大它的功效。用户程序一般都基于下面的三种类:XmlTextReader、XmlValidatingReader或者 XmlNodeReader类。所有的这些类都有如图一的属性和图二的方法。要留心的是,某些属性的值实际上依附于实际的某个浏览器类,不同的类与基类可能不同。因此,在图一中每个属性的阐明都是以基类为准的。例如,CanResolveEntity属性在XmlValidatingReader类中只返回true;而在其它的浏览器类中它却可以设为false。同样的,在图二中的某些方法的实际返回值对不同的类可能不同。例如,假如节点类型不是元素节点(element node),所有包含Atrributes的方法的返回值类型都是void。 

??XmlTextReader类用只进,只读的方法快速拜访XML数据流。浏览器先验证XML文档是否是格局良好的,假如不是则抛出一个异常。XmlTextReader 检查 DTD 的格局是否良好,但不应用 DTD 对文档进行验证。XmlTextReader通过XML文档的文件名,或它的URL,或者从文件流中载进XML文档,然后快速的处理XML文档数据。假如你需要对文档的数据进行验证,你可以用XmlValidatingReader类。 

??可以用多种方法创立XmlTextReader类的实例,从硬盘中加载文件,或从URL地址中加载,流(streams)中加载,还有就是从文本中读进XML文档数据: 

??XmlTextReader reader = new XmlTextReader(file); 

??留心,所有XmlTextReader类的公共(public)结构函数都请求你指定数据源,数据源可以是stream、文件或者其它。XmlTextReader默认的结构函数是受保护的(protected),所以不能直接应用。像.NET Framework中所有的浏览器类一样(如SqlDataReader类),一旦浏览器对象连接并打开,你就可以用Read方法往拜访数据了。开端的时候只能用Read方法把指针移到第一个元素;然后我们可以用Read方法或其它方法(如Skip, MoveToContent和ReadInnerXml)移动指针到下一个节点元素。要处理全部XML文档的内容,可以根据Read方法的返回值用一个循环遍历文档内容,由于Read方法返回一个布尔值,当读到文档的尾节点时,Read方法返回false,否则它返回true。 



??Figure 3 Outputting an XML Document Node Layout 

??string GetXmlFileNodeLayout(string file) 
??{ 
??// 创立一个XmlTextReader类使它指向目标XML文档 
??XmlTextReader reader = new XmlTextReader(file); 

??// 循环取出节点的文本并放进到StringWriter对象实例中 
??StringWriter writer = new StringWriter(); 
??string tabPrefix = ''; 

??while (reader.Read()) 
??{ 
??// 写开端标记,假如节点类型为元素 
??if (reader.NodeType == XmlNodeType.Element) 
??{ 
??//根据元素所处节点的深度,参加reader.Depth个tab符,然后把元素名写进到<>中。 
??tabPrefix = new string('\t', reader.Depth); 
??writer.WriteLine('{0}<{1}>', tabPrefix, reader.Name); 
??} 
??else 
??{ 
??//写结束标记,假如节点类型为元素 
??if (reader.NodeType == XmlNodeType.EndElement) 
??{ 
??tabPrefix = new string('\t', reader.Depth); 
??writer.WriteLine('{0}', tabPrefix, reader.Name); 
??} 
??} 
??} 

??// 输出到屏幕 
??string buf = writer.ToString(); 
??writer.Close(); 

??// 封闭流 
??reader.Close(); 

??return buf; 
??} 


??图三演示了一个简略的用于输出一个给定的XML文档的节点元素的函数。该函数先打开一个XML文档,然后用循环处理XML文档中所有的内容。每次调用Read方法,浏览器的指针都会向下移一个节点。大部分情况下,用Read方法可以处理的元素节点,但有时候,当你从一个节点移动到下一个节点时,可能是在两个不同类型的节点间移动。但是Read方法不能在属性节点之间移动。浏览器的MoveToContent方法可以让指针从头部节点地位跳到第一个内容节点地位。在ProcessingInstruction, DocumentType, Comment, Whitespace和SignificantWhitespace类型节点中也可以用Skip方法移动指针。 

以上就是在.NET Framework中轻松处理XML数据(1-2) 的内容,更多相关内容请关注PHP中文网(www.php.cn)! 


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Microsoft NET Framework 安装问题 错误代码 0x800c0006 修复 Microsoft NET Framework 安装问题 错误代码 0x800c0006 修复 May 05, 2023 pm 04:01 PM

.NETFramework4是开发人员和最终用户在Windows上运行最新版本的应用程序所必需的。但是,在下载安装.NETFramework4时,许多用户抱怨安装程序在中途停止,显示以下错误消息-“ .NETFramework4hasnotbeeninstalledbecauseDownloadfailedwitherrorcode0x800c0006 ”。在您的设备上安装.NETFramework4时,如果您也在体验它,那么您就来对了地方

如何在 Windows 11/10 上使用 SetupDiag 识别 Windows 升级问题 如何在 Windows 11/10 上使用 SetupDiag 识别 Windows 升级问题 Apr 17, 2023 am 10:07 AM

每当您的Windows11或Windows10PC出现升级或更新问题时,您通常会看到一个错误代码,指示故障背后的实际原因。但是,有时,升级或更新失败可能不会显示错误代码,这时就会出现混淆。有了方便的错误代码,您就可以确切地知道问题出在哪里,因此您可以尝试修复。但是由于没有出现错误代码,因此识别问题并解决它变得极具挑战性。这会占用您大量时间来简单地找出错误背后的原因。在这种情况下,您可以尝试使用Microsoft提供的名为SetupDiag的专用工具,该工具可帮助您轻松识别错误背后的真

Python实现XML数据的过滤和筛选 Python实现XML数据的过滤和筛选 Aug 09, 2023 am 10:13 AM

Python实现XML数据的过滤和筛选XML(eXtensibleMarkupLanguage)是一种用于存储和传输数据的标记语言,它具有灵活性和可扩展性,常被用于在不同系统之间进行数据交换。在处理XML数据时,我们经常需要对其进行过滤和筛选,以提取出我们所需的信息。本文将介绍如何使用Python来实现XML数据的过滤和筛选。导入所需模块在开始之前,我们

SCNotification 已停止工作 [修复它的 5 个步骤] SCNotification 已停止工作 [修复它的 5 个步骤] May 17, 2023 pm 09:35 PM

作为Windows用户,您很可能会在每次启动计算机时遇到SCNotification已停止工作错误。SCNotification.exe是一个微软系统通知文件,由于权限错误和点网故障等原因,每次启动PC时都会崩溃。此错误也以其问题事件名称而闻名。因此,您可能不会将其视为SCNotification已停止工作,而是将其视为错误clr20r3。在本文中,我们将探讨您需要采取的所有步骤来修复SCNotification已停止工作,以免它再次困扰您。什么是SCNotification.e

分享几个.NET开源的AI和LLM相关项目框架 分享几个.NET开源的AI和LLM相关项目框架 May 06, 2024 pm 04:43 PM

当今人工智能(AI)技术的发展如火如荼,它们在各个领域都展现出了巨大的潜力和影响力。今天大姚给大家分享4个.NET开源的AI模型LLM相关的项目框架,希望能为大家提供一些参考。https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel是一种开源的软件开发工具包(SDK),旨在将大型语言模型(LLM)如OpenAI、Azure

Microsoft .NET Framework 4.5.2、4.6 和 4.6.1 将于 2022 年 4 月终止支持 Microsoft .NET Framework 4.5.2、4.6 和 4.6.1 将于 2022 年 4 月终止支持 Apr 17, 2023 pm 02:25 PM

已安装Microsoft.NET版本4.5.2、4.6或4.6.1的MicrosoftWindows用户如果希望Microsoft将来通过产品更新支持该框架,则必须安装较新版本的Microsoft框架。据微软称,这三个框架都将在2022年4月26日停止支持。支持日期结束后,产品将不会收到“安全修复或技术支持”。大多数家庭设备通过Windows更新保持最新。这些设备已经安装了较新版本的框架,例如.NETFramework4.8。未自动更新的设备可能

C#的就业前景如何 C#的就业前景如何 Oct 19, 2023 am 11:02 AM

无论您是初学者还是有经验的专业人士,掌握C#将为您的职业发展铺平道路。

适用于 Windows 11 的KB5012643破坏了.NET Framework 3.5应用程序 适用于 Windows 11 的KB5012643破坏了.NET Framework 3.5应用程序 May 09, 2023 pm 01:07 PM

自我们谈论影响安装KB5012643forWindows11的用户的新安全模式错误以来已经过去了一周。这个讨厌的问题并没有出现在微软在发布当天发布的已知问题列表中,因此让所有人都感到意外。好吧,就在您认为情况不会变得更糟的时候,微软为安装此累积更新的用户投下了另一颗炸弹。Windows11Build22000.652导致更多问题因此,这家科技公司警告Windows11用户,他们在启动和使用某些.NETFramework3.5应用程序时可能会遇到问题。听起来很熟悉?不过请不要惊

See all articles