浏览 2704 次
锁定老帖子 主题:MSXML默认解析外部DTD
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-11-07
测试过程和书写代码略,就简述结论如下。 WML文件有DOCTYPE,上带有DTD声明。怀疑是去读取DTD文件所致。删除整个DOCTYPE声明,果然就好了。 但是程序每次删除DOCTYPE显然不可行,因为这样一个操作无法作为DOM操作(因为当时DOM尚未解析出来),而必须进行字符串处理,这样就不能直接load了。如此hack无论如何无法接受。 于是寻找正途,即msxml上的参数配置。经过狗狗,得到最终方案: var xmldoc = new ActiveXObject('MSXML2.DOMDocument.3.0'); xmldoc.async = true; xmldoc.onreadystatechange = xmlLoaded; xmldoc.resolveExternals = false; xmldoc.validateOnParse = false; xmldoc.load('my.wml'); 注意,resolveExternals和validateOnParse都需要设置。因为默认要启用validate,若禁用外部DTD的resolve,就无法validate了(除非有内部DTD),会出错(得不到xml dom对象)。 以上。 因印象中此问题以前似解决过,但现在又忘记了(早老痴呆矣),故记录于此。 又,aimingoo说其昨日狗狗半天未得其法,偶笑曰,吾之狗狗神功已经练至第七重也,尔功力尚不足矣。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |