DOMDocument 与 FreeThreadedDOMDocument 有什么不同?分别在什么条件下适用?

 一般使用Msxml2.Document组件来加载xml文档的,但当动态使用xsl解析xml文档时,必须使用Msxml2.FreeThreadedDOMDocument这种自由线程的组件,同时使用MSXML2.XSLTemplate模板组件来加载xml,xsl数据,通过MSXML2.XSLTemplate的transform方法,就可以动态的用xsl来解析xml数据了,另外,IE5开始,系统默认的xml组件是msxml2,如果需要使用更新的msxml组件需要安装更新的msxml组件包,并指定新的名称,例如Msxml2.FreeThreadedDOMDocument.4.0

意思是说,用transform转换xml的时候,必须用FreeThreadedDOMDocument加载文档,用XSLTemplate去解析吗?

我现在用的是DOMDocument加载xml和xsl并transform,暂时没有发现问题

我用JScript说明一下:
如果将XSLT作为一个DOMDocument加载:
var xsl=new ActiveXObject("MSXML2.DOMDocument.5.0");
xsl.load(路径);
// 然后使用XML文档的:
doc.transformNode(xsl);

这是没有问题的。

使用FreeThreaded的DOM主要是在用XSLTemplate来转换XML文档的时候:
var xsl=new ActiveXObject("MSXML2.FreeThreadedDOMDocument.5.0");
xsl.load(路径);
var xslt=new ActiveXObject("MSXML2.XSLTemplate.5.0"); //创建一个XSL模板
xslt.stylesheet=xsl; //模板的样式表源设为xsl
var proc=xslt.createProcessor(); //使用样式表创建一个XML处理器
proc.input=doc; //将XML文档连接到处理器
proc.transform(); //使用样式表转换文档
var xmlout=proc.output; //得到输出 注意取走输出一次后输出变为空

这是因为XSLProcessor必须异步地处理XML文档的转换 因此你的XSL文档必须是自由线程模式的
如果你的XSL文档是普通的DOMDocument 会得到提示: 需要自由线程模式

DOMDocument比较常用 而FreeThreaded的文档虽然用法基本一样
但机制复杂一些
可以参考MSDN Library

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值