`
totoxian
  • 浏览: 1074259 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

并非万能的XML

阅读更多

并非万能的XML

左直拳

XML是个炙手可热的东西,出来很多年了,好象还听说将取代HTML(不过直到今天HTML1.1还健在,其实我认为两者很大程度上并无可比性)。有一次我去面试,人家问我熟不熟悉XML,答曰不会,结果被“人来落闸放狗”地赶了出来。

现在我已经在一些地方应用到了XML。众所周知,。NETXML绑得很紧,比如DataSet,比如WEB SERVICE传递的参数以及返回值。做产品介绍类的网站,如果将产品信息存放在XML文件里,因为不必去查询数据库,速度会很快,同时结合XSL,呈现的样式又很灵活,修改也非常方便。另外,我还很喜欢将程序的配置文件写成XML形式,用DataSet可以不写什么代码就能够读出来。

不过看起来,XML比较适合少量的数据,记录一多,弊端就出来了。之前做的一个网站,需要不定期上传本地系统的数据。采取的办法是本地系统(PB作品)先将数据导出为XML,然后上传此XML文件到网站,读取分析,保存到网站数据库。

刚开始还未发觉有什么不妥,只是速度慢了一点。直到有一天,客户上传了一个包含3万多条记录的文件,不管重复了多少遍,网页最终还是显示“连接已超时”。其实在网页的服务器端代码里,我已经标上

Server.ScriptTimeout = 900;

IIS也已经将网站的连接超时值由120秒设成900秒。

那个文件并不大,只有2M多一点,不过由于记录短,所以数目比较多,有3万多条。我调试了一下,发觉时间既不是耗在上传上,也不是在更新数据库上,而是在文件读取上。

这说明,XML的读取效率不高,也许是因为它采取了明文存取的原因吧。

后来的解决办法是抛弃XML,改用DBF格式,将数据导成DBF文件,然后上传,读取,保存,文件也小,整个过程只须几十秒。

读入DBF主要是靠SQL SERVER。语句如下:

string sql = "INSERT INTO " + table_name + " SELECT * FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase IV;HDR=NO;IMEX=2;DATABASE=" + DBF文件所在目录 + "','SELECT * FROM [" + DBF文件名 + "]')";

要执行这条语句,数据库的登录名要具有System.Administrators服务器角色。

分享到:
评论

相关推荐

    当想到所有文件都转换为 XML时,确实是一件好事。但是,这并非事实。仍旧还有大量的文件格式不是XML,甚至也不是 ASCII。

    然而,XML并不是万能的,很多文件仍然采用非XML格式,甚至可能是二进制格式。在C#编程环境中,对二进制文件的解析和操作是一项基础且重要的技能。 首先,让我们理解XML的优势。XML是一种自描述的标记语言,允许...

    Android-万能遥控器-实现了类似小米万能遥控器的基本功能还可以遥控电脑

    - XML布局:Android应用的用户界面通常通过XML文件定义,包括按钮、滑块等元素。 - Material Design:谷歌推荐的设计规范,提供了一套统一的视觉语言和交互体验。 4. **设备识别与适配** - 遥控码学习:部分应用...

    10种良好的xml使用习惯.

    4. **验证并不总是万能的**:虽然验证能发现许多问题,但并非所有错误都能通过验证捕获。例如,业务逻辑错误或特定场景下的数据问题可能无法由验证器识别。 5. **保持XML结构清晰和简洁**:使用有意义的元素名,...

    XML ISAS

    然而,XML并非万能: - 数据转换:并非所有电子数据都适合转化为XML,有时其他格式可能更有效。 - 编程语言:XML本身不支持计算或逻辑控制,不能作为编程语言使用。 XML的相关技术包括: - DTD(文档类型定义):...

    Android参考源码-使用Vitamio打造自己的Android万能播放器(1)——在线播放.zip

    同时,别忘了在AndroidManifest.xml中添加Vitamio的权限,如互联网访问权限。 2. **创建VideoView**: `VideoView`是Vitamio提供的视图组件,用于显示视频。在布局文件中添加`io.vov.vitamio.widget.VideoView`,并...

    mybatis逆向自动生成工具mybatisGenerator

    然而,MBG并非万能,对于复杂的数据模型或者特殊的业务需求,可能还需要手动调整生成的代码。但总的来说,MBG显著减少了手动编码的工作量,提升了开发效率,是MyBatis开发中不可或缺的工具。 在实际应用中,MBG还...

    修改java代码以及js无需重启tomcat

    不过,也需要清楚地认识到热部署并非万能,对于某些特殊情况还是需要采取传统的重启方式。此外,还应该注意在生产环境中禁用热部署功能,以避免潜在的安全风险和性能问题。总之,合理利用Tomcat的热部署功能,可以使...

    安卓Widget小组件相关-WidgetTest.zip

    【Android Widget小组件详解】 Android Widget是Android系统中一种特殊的应用组件,允许...尽管并非所有代码都能直接运行,但通过对这些源码的分析和研究,开发者可以深入掌握如何设计和实现自己的Android桌面小组件。

    jrebel + myeclipse9.0 + tomcat 热部署攻略

    在Java开发过程中,提高开发效率的一个重要方法是实现应用的热部署,即...记住,热部署并非万能,对于某些复杂场景,可能仍然需要手动重启服务器来确保更新的正确性。但无论如何,JRebel都是一种值得尝试的优秀工具。

    Mybatis逆向工程

    然而,逆向工程并非万能,使用时需要注意一些限制和最佳实践。 首先,逆向工程生成的代码主要是为了实现单表查询操作。这意味着,如果你需要进行复杂的多表联查或者自定义的业务逻辑查询,这些功能不会自动被逆向...

    code-generator.zip

    《代码自动生成——Java技术深度探索》 在软件开发过程中,代码自动...然而,值得注意的是,代码生成并非万能,过度依赖可能会导致代码过于僵化,缺乏灵活性,因此在实际应用中,需要根据项目需求权衡利弊,恰当使用。

    hibernate二级缓存(包括注解方式)

    但需要注意,二级缓存并非万能,不适用于所有场景,例如频繁更新的数据就不适合放入二级缓存,以免出现数据一致性问题。 ### 3. 二级缓存配置 要启用二级缓存,首先需要在Hibernate配置文件`hibernate.cfg.xml`中...

    XSS脚本注入拦截框架 antisamy

    AntiSamy为Web开发者提供了一个强大的工具来对抗XSS攻击,但它并非万能药。开发者需持续关注策略文件的维护,结合其他安全措施,如输入验证、输出编码等,共同构建全面的安全防线。通过合理利用AntiSamy,可以显著...

    Gator震荡 - MetaTrader 5脚本.zip

    4. **结合其他工具**:Gator震荡指标虽强大,但并非万能。与其他技术指标(如RSI、MACD)或价格形态结合使用,可提高交易决策的准确性。 了解了Gator震荡指标的基本原理和应用后,我们回到提供的文件——"gator.mq5...

    tomcat服务器跨域需要的CorsFilter jar包文件

    但要注意,CORS并非万能解决方案,对于安全性要求高的应用,还需要结合其他安全措施,如JWT令牌验证,以防止跨域攻击。 总结来说,解决Tomcat服务器的跨域问题,关键在于理解CORS机制和配置CorsFilter。这个过程...

    hibernate Important

    - 二级缓存并非万能,对于频繁更新的数据,过多使用二级缓存可能导致数据不一致问题。 - 二级缓存的性能优化需要权衡,过度依赖缓存可能会增加内存消耗,导致系统性能下降。 - 对于大数据量的查询,应谨慎使用二级...

    mycat.zip+分库分表文档

    然而,需要注意的是,分库分表并非万能解决方案,它可能会带来数据一致性、事务处理复杂度等问题,因此在设计时需充分考虑业务特性,合理规划数据分布和查询策略。 总的来说,Mycat作为开源的分库分表中间件,为...

    rapid-generator-3.9.2.20100720_code_generate.zip

    值得注意的是,代码生成器并非万能,它生成的代码可能需要根据实际需求进行微调。例如,某些复杂的业务逻辑可能需要在Service层添加额外的处理,或者某些特定的查询条件可能需要在Mapper层进行定制。因此,尽管代码...

    java设计模式参考手册

    标签中提到了“asp.net c# java perl xml”,这表明设计模式并非Java独有,而是跨语言的概念。尽管本书专注于Java,但理解设计模式的原理和应用场景后,开发者也可以将其应用于其他语言,如ASP.NET和C#。XML作为数据...

    lombok_lombak_

    然而,需要注意的是,Lombok并非万能解决方案,它不适用于所有情况,比如有时需要对生成的方法进行定制,这时可能就需要手动编写代码。 Lombok.jar是Lombok库的归档文件,通常在Java项目中通过Maven或Gradle等构建...

Global site tag (gtag.js) - Google Analytics