0

0

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

黄舟

黄舟

发布时间:2016-12-20 14:02:57

|

1563人浏览过

|

来源于php中文网

原创

?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}', 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)! 

MusicLM
MusicLM

谷歌平台的AI作曲工具,用文字生成音乐

下载

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

2

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

2

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

0

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

0

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

3

2026.01.29

clawdbot ai使用教程 保姆级clawdbot部署安装手册
clawdbot ai使用教程 保姆级clawdbot部署安装手册

Clawdbot是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

25

2026.01.29

clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址
clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址

clawdbot龙虾机器人官网入口:https://clawd.bot/,clawdbot ai是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

16

2026.01.29

Golang 网络安全与加密实战
Golang 网络安全与加密实战

本专题系统讲解 Golang 在网络安全与加密技术中的应用,包括对称加密与非对称加密(AES、RSA)、哈希与数字签名、JWT身份认证、SSL/TLS 安全通信、常见网络攻击防范(如SQL注入、XSS、CSRF)及其防护措施。通过实战案例,帮助学习者掌握 如何使用 Go 语言保障网络通信的安全性,保护用户数据与隐私。

8

2026.01.29

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

622

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 7.9万人学习

python编程入门系列图文教程
python编程入门系列图文教程

共65课时 | 24.7万人学习

vscode其实很简单
vscode其实很简单

共72课时 | 29.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号