LoadXml载入Xhtml文件速度很慢
如果有如下的Xhtml文字,在.Net中用XmlDocument.LoadXml载入的时候,速度很慢。
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title></title>
- </head>
- <body>
- <p>Hello.</p>
- </body>
- </html>
简单解决:不解析外部资源
这个xml文本和一般xml文本的差别是多了一个Doctype说明,指定了一个DTD文件。根据.Net文档中关于XmlDocument.LoadXml的说明,是不会进行DTD或者Schema的验证的,所以并不是验证消耗了时间。对于Load方法也是这样。
不过,这个xml文本比较涉及到了一个外部文本,http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd,所以微软在Load的时候,会首先载入这个文件。也就是说,在载入每一个Xhtml文件的时候,都会到www.w3.org去下载一个文件。
XmlDocument是通过XmlResolver这个属性来设置如何处理外部资源的。简单的把这个属性设置为null(Nothing),就可以彻底不解析任何外部资源。速度也就快了。
不过,这种解决方法不是彻底的解决方法,因为这样,所有的实体(Entities)都不能正确的解释,比如©之类。如果确认输入文本没有Entities,那可以这样简单的解决。
完美解决:将Xhtml试用DTD保存到本地
完美的解决方法是,把Xhtml所要使用到的DTD相关文件都保存到本地目录上,让XmlDocument从本地读取Entities定义信息。和Xhtml相关的DTD文件一共有6个,在Xhtml 1.0标准附录:DTDs中已经列出,列出文件Url如下。
- XHTML-1.0-Strict: http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd
- XHTML-1.0-Transitional: http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
- XHTML-1.0-Frameset: http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd
- Latin-1 characters: http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent
- Special characters: http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent
- Symbols: http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent
以上文件需要保存到本地目录中,然后用下面代码建立XhtmlUrlResolver类对Xhtml相关的DTD文件进行重新定向,定向到本地目录。
LoadXml载入Xhtml文件速度很慢的更多相关文章
- 外网上传到NAS速度很慢是什么情况?上行1M都不到,但是测试有4M
外网上传到NAS速度很慢是什么情况?上行1M都不到,但是测试有4M NAS可以将自己的影片,图片,音乐都放在NAS中.在家中就能无线共享了.在其他地方要下载自己nas里的影片,下载速度主要取决于家里宽 ...
- Android的WebView控件载入网页显示速度慢的究极解决方案
Android的WebView控件载入网页显示速度慢的究极解决方案 [转载来源自http://hi.baidu.com/goldchocobo/] 秒(甚至更多)时间才会显示出来.研究了很久,搜遍了国 ...
- 【重要】U3D存放本地游戏存档——不同平台载入XML文件的方法——IOS MAC Android
在PC上和IOS上读取XML文件的方式略有差别,经测试,IOS上不支持如下方法载入XML文件: XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load( ...
- (转)U3D不同平台载入XML文件的方法——IOS MAC Android
自:http://www.cnblogs.com/sifenkesi/archive/2012/03/12/2391330.html 在PC上和IOS上读取XML文件的方式略有差别,经测试,IOS上不 ...
- WIN8.1的安装和打开"这台电脑"速度很慢的解决办法
WIN8.1的安装和打开"这台电脑"速度很慢的解决办法 对于非服务器用的电脑,如果电脑的内存在2G或更高,首推的操作系统是 WINDOWS8.1 64位企业版,用了就知道,没有比这流畅懂事的操作系统. ...
- Extjs学习----------动态载入js文件(减轻浏览器的压力)
动态载入js文件能够减轻浏览器的压力,本例使用了Ext.window.Window组件,该组件的学习地址:http://blog.csdn.net/z1137730824/article/detail ...
- VS2012 编译程序时报无法载入PDB文件错误解决方式
VS2012 编译程序时报无法载入PDB文件错误解决方式 "ConsoleApplication1.exe"(Win32): 已载入"C:\Users\hp\Docume ...
- 为了提高性能,怎样动态载入JS文件
超级表格是一款多人协作的在线表格.程序相当复杂,用到十几个JS文件. 可是有些文件是在打开某些类型的表格时才须要载入. 比如,仅仅有当打开甘特图表格时,才须要载入gantetu.js文件. 那么问题来 ...
- wordpress网站后台打开速度很慢解决方法?
今天就和朋友们分享下,wordpress网站后台最近打开速度很慢的原因及解决方法.推荐第三种方法 方法/步骤 1.安装插件:在插件中搜索 Disable Google Fonts,选择安装,然后启 ...
随机推荐
- python stat获取文件信息
import os statinfo = os.stat('qqq.txt') print(statinfo,"\n") print(statinfo.st_mode) 输出 os ...
- a href 属性
两种用法: 页面跳转时使用 url (部分浏览器会阻止新窗口弹出页面),其他情况一律遵循 ‘结构样式行为分离’ 1. url href="#" 文档顶部 ...
- spark + cassandra +postgres +codis 大数据方案
1.环境: 1.1.cassandra 集群: 用于日志数据存储 1.2.spark集群: 用户后期的实时计算及批处理 1.3.codis 集群: 用于缓存一些基本数据如IP归属地,IP经纬度等,当日 ...
- uva10655矩阵快速幂
a^(n+2)+b^(n+2)=(a+b)*(a^(n+1)+b^(n+1))-a*b*(a^n+b^n) 坑爹的题目关系式都推出来了居然还是wa了..... 不能只看p,q=0就退出,因为a,b不一 ...
- iOS UI-静态单元格与动态单元格
- day40 数据结构-算法(二)
什么是数据结构? 简单来说,数据结构就是设计数据以何种方式组织并存储在计算机中. 比如:列表.集合与字典等都是一种数据结构. N.Wirth: “程序=数据结构+算法” 列表 列表:在其他编程语言中称 ...
- phpstudy2017版本的nginx 支持laravel 5.X配置
之前做开发和学习一直用phpstudy的mysql服务,确实很方便,开箱即用.QQ群交流:697028234 现在分享一下最新版本的phpstudy2017 laravel环境配置. 最新版的phps ...
- 【转】MongoDB 3.0 正式版本即将发布,强力推荐
MongoDB 今天宣布3.0 正式版本即将发布.这标志着 MongoDB 数据库进入了一个全新的发展阶段,提供强大.灵活而且易于管理的数据库管理系统. MongoDB 3.0 在性能和伸缩性方面都有 ...
- STL标准库-hash
技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性 hash的结构图如下图 oject通过hashfunc转换成hashcode然后插入到相应篮子中 hash同rb_tree是一种 ...
- CF-1055E:Segments on the Line (二分&背包&DP优化)(nice problem)
You are a given a list of integers a 1 ,a 2 ,…,a n a1,a2,…,an and s s of its segments [l j ;r j ] [ ...