XML文件导入、导出到 DataSet
//导出dataset数据到XML文件 //Author:Quietwalk //2010-09-09 publicboolExportToXMl(DataSetds,stringstrXMLPath) { //DirectoryInfo mobileDir = new DirectoryInfo(strXMLPath); FileInfoXMLfile =newFileInfo(strXMLPath); boolbReturnValue =false; try { if(ds !=null&& ds.Tables.Count > 0 && XMLfile.Exists) ds.WriteXml(strXMLPath,XmlWriteMode.WriteSchema); bReturnValue =true; }
catch(SqlCeExceptionex) throw(ex); returnbReturnValue; } //XML数据导入到 DataSet中 publicDataSetImportFromXml(stringfromPath) FileInfoxmlFile =newFileInfo(fromPath); DataSetdsXML =null; if(xmlFile.Exists) FileStreamfsReadXml =newFileStream(fromPath,175);">FileMode.Open); XmlTextReadermyXmlReader =newXmlTextReader(fsReadXml); dsXML=newDataSet(); dsXML.ReadXml(myXmlReader); myXmlReader.Close(); returndsXML; 说明:
DateSet.ReadXML()ReadXML缺省使用XmlReadMode.Auto方式读取,这就给大数据量留下了低效率的伏笔。因为如果XML没有Scheme,DataSet就会自己推算的结构,然后再加载,这就是低效的主要原因。让推算不让我们帮他算,因为已经提供了一个ReadXmlSchema方法。 dataset是这样存储的:table(0)中存放feature层的信息,包括fno等属性,只有一行;
1.载入xml文件的格式要求a.不可以读取空的文件. b.可以读取没有<?xml?>头的xml文件你的文件可以不包含<?xml version="1.0" encoding="utf-8" ?>这样的代码. 2.xml文件的编码格式a.<?xml?>头中标记的编码最好和文件自身的编码一致在测试文件中我使用utf-32存储标记为utf-8的或者反过来都导致了读取文件异常.虽然我并没有对所有的编码进行测试而且用ASCII时读取不会出现异常只不过中文可能会出现乱码最好还是保持编码一致吧采用存储文件可能出现中文乱码. 3. XmlReadMode参数对DataSet读取xml文件的影响非典型如果包含架构并使用默认的或者忽略此选项将只载入文件中符合架构的数据如果你的数据集中包含了架构信息例如定义了S1,T1(Name string,Age int),Student(Name string,Teacher 4个表数据集名称为TestDS,51);">命名空间为http://tempuri.org/TestDS.xsd,如果一个的xml文件如下: <?xml version="1.0" encoding="utf-8" ?> 使用读取此文件时第一个Student被读取到表中因为中对应的列名数据类型和架构一致第二个Teacher不会被读取架构中虽然包含了表Teacher,51);">但并没有定义任何的列而中的包含了Name,Age两个列第三个Room因为架构中不包含表Room.以上是针对非典型测试的结果典型应该也是如此有兴趣的朋友可以自己测试一下如果不包含架构将分析并采用文件的架构如果仅仅使用new创建了一个非典型DataSet,51);">那么中尚未包含架构: <?xml version="1.0" encoding="utf-8" ?> 当读取将分析数据集名称命名空间并针对每一条数据进行架构分析我想这一点很重要正如上面的文件中当读取到第一个分析得到需要Room(ID)这样的表读取第二个会发现表的架构信息已经存在经过对比发现需要变更架构为Room(ID,Name).每一条数据除了架构分析以外还要进行可能的架构更改工作因此在效率上可能不及a中说到的情况c.对于XmlReadMode的其余选项似乎并不用于ReadXml方法或者没有实际效果4.载入xml字符串,byte[]数组到DataSet
DataSet.ReadXml(new StringReader(string)) http://www.cnblogs.com/quietwalk/archive/2010/09/09/1822192.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |