




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
使用XMLReader、XMLDocument和DataSet读取xml文件及效率 在 .NET 开发中经常需要读取和操作XML文件,例如:操作配置文件(web.config和app.config)、读取业务设置的xml文件等。以前都喜欢用DataSet直接读取或写入xml,当文件小的时候,读取效率还能接受,但是当文件很大的时候,读取就变得很慢了。闲暇之于就对 XMLReader 、 XMLDocument和DataSet 读取XML文件进行简单总结,对效率进行简单比较。1、XMLReader 读取XML文件 XMLReader 提供对 XML 数据进行快速、非缓存、只进访问的读取器。XMLReader 只能读取xml文件,需要我们自己控制怎样获取相应的xml节点的信息,适合于读取很大的xml文件。XMLReader 有一个类型为XmlNodeType的NodeType只读属性,通过它可以知道当前节点类型,以及根据节点类型和具体需求获取相应节点的信息。更详细的信息可以到微软技术资源库进行查询和了解。XMLReader读取XML文件方式如下: 1: static ListDictionary XMLReaderTest(string xmlPath) 2: 3: ListDictionary entityInfo = new ListDictionary(); 4: using (XmlReader reader = new XmlTextReader(xmlPath) 5: 6: Dictionary xmlValue = null; 7: string key = string.Empty; 8: while (reader.Read() 9: 10: switch (reader.NodeType) 11: 12: case XmlNodeType.Element: 13: if (string.Compare(reader.LocalName, BE_WorkStation_ACInstance, StringComparison.OrdinalIgnoreCase) = 0) 14: 15: xmlValue = new Dictionary(); 16: 17: else 18: 19: if (string.Compare(reader.LocalName, EntitySchema, StringComparison.OrdinalIgnoreCase) != 0) 20: 21: key = reader.LocalName; 22: 23: 24: break; 25: case XmlNodeType.EndElement: 26: if (string.Compare(reader.LocalName, BE_WorkStation_ACInstance, StringComparison.OrdinalIgnoreCase) = 0) 27: 28: if (xmlValue != null) 29: 30: entityInfo.Add(xmlValue); 31: xmlValue = null; 32: 33: 34: break; 35: case XmlNodeType.Text: 36: if (xmlValue != null) 37: 38: xmlValue.Add(key, reader.Value); 39: 40: break; 41: default: 42: break; 43: 44: 45: 46: return entityInfo; 47: 2、XMLDocument读取XML文件 XMLDocument 表示XML文档在内存中的树形结构,它提供像js操作html文档一样的方式操作XML文档。在读取单个小XML文件时效率比较高。XMLDocument 读取XML文件方式如下: 1: static ListDictionary XMLDocumentTest(string xmlPath) 2: 3: ListDictionary entityInfo = new ListDictionary(); 4: using (XmlReader reader = new XmlTextReader(xmlPath) 5: 6: XmlDocument doc = new XmlDocument(); 7: doc.Load(reader); 8: XmlNodeList nodeList = doc.ChildNodes; 9: foreach (XmlNode node in nodeList) 10: 11: var xmlValue = new Dictionary(); 12: foreach (XmlNode child in node.ChildNodes) 13: 14: xmlValuechild.LocalName = child.InnerText; 15: 16: entityInfo.Add(xmlValue); 17: 18: 19: return entityInfo; 20: 3、DataSet 读取XML文件 DataSet 类型提供了一个ReadXml 方法,它将XML架构和数据读入DataSet中。DataSet 在读取 XML 文件时效率很低。DataSet 读取XML文件方式如下: 1: static ListDictionary DataSetTest(string xmlPath) 2: 3: ListDictionary entityInfo = new ListDictionary(); 4: DataSet ds = new DataSet(); 5: /读取XML文件架构 6: using (XmlReader reader = new XmlTextReader(xmlPath) 7: 8: ds.ReadXmlSchema(reader); 9: 10: foreach (DataTable dt in ds.Tables) 11: 12: dt.BeginLoadData(); 13: 14: using (XmlReader reader = new XmlTextReader(xmlPath) 15: 16: ds.ReadXml(reader); 17: 18: foreach (DataTable dt in ds.Tables) 19: 20: dt.EndLoadData(); 21: 22: if (ds.Tables.Count 0) 23: 24: DataTable dt = ds.Tables0; 25: foreach (DataRow row in dt.Rows) 26: 27: var xmlValue = new Dictionary(); 28: foreach (DataColumn col in dt.Columns) 29: 30: xmlValuecol.ColumnName = row.Field(col); 31: 32: entityInfo.Add(xmlValue); 33: 34: 35: return entityInfo; 36: 读取的xml文件片段: 1: 2: 3: 4: 5: MS_ACInstanceOID 6: 主键 7: 45 8: 500 9: 0 10: 选择 11: false 12: true 13: 14: 0 15: true 16: 17: 18: 19: 选择列 20: false 21: MS_ACInstance.MS_ACInstanceOID as MS_ACInstanceOID 22: true 23: 24: true 25: true 26: 27: 28: 29: 30: false 31: 32: 33: 34: 35: sys_rank 36: 排序标识 37: 2 38: 500 39: 0 40: 选择 41: false 42: true 43: 44: 0 45: true 46: 47: 48: 49: 选择列 50: false 51: MS_ACInstance.BASE_Rank as sys_rank 52: true 53: BASE_Rank 54: true 55: true 56: 57: 58: 59: 60
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 论营养师在社会工作的价值与功能试题及答案
- 江西省2025届高三教学质量监测高三思想政治试卷(含解析)
- 详解2025年临床执业医师考试试题及答案
- 银行往届笔试试题及答案
- 识别税务师考试考试中的常见陷阱试题及答案
- 编导简答题试题及答案
- 西部矿业考试题及答案
- 广东省清远市四校2023-2024学年高一下学期期中联考语文试题(解析版)
- 2025长虹美菱股份有限公司招聘操作工等岗位310人(四川)笔试参考题库附带答案详解
- 2025辽宁地矿集团总部部长岗位竞(招)聘4人笔试参考题库附带答案详解
- 2023年郑州黄河护理职业学院单招职业适应性测试笔试题库及答案解析
- 禁食疗法课件
- 5以内的相邻数课件
- 《学习纵向展开议论》课件
- 政府采购业务知识培训课件(PPT33张)
- 大体积混凝土施工质量控制论文
- 客户退货申请单
- 生活垃圾综合处理厂焚烧发电施工组织设计(201页)
- SH3405管道壁厚等级表
- 苯冷却器设计(共24页)
- 名∶聚乙烯(PE)土工膜防渗工程技术规范
评论
0/150
提交评论