分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

LoadXml载入Xhtml文件速度很慢

发布时间:2023-09-06 02:01责任编辑:苏小强关键词:暂无标签

如果有如下的Xhtml文字,在.Net中用XmlDocument.LoadXml载入的时候,速度很慢。

  1.  
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2.  
    <html xmlns="http://www.w3.org/1999/xhtml">
  3.  
    <head>
  4.  
    <title></title>
  5.  
    </head>
  6.  
    <body>
  7.  
    <p>Hello.</p>
  8.  
    </body>
  9.  
    </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)都不能正确的解释,比如&copy;之类。如果确认输入文本没有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文件速度很慢

原文地址:https://www.cnblogs.com/cuihongyu3503319/p/9243917.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved