我怎样才能问IXMLDOMDocument2是什么版本的MSXML?给定一个IXMLDOMDocument2,我需要创建另一个相同版本的文档。
如果您从MSXML的不同版本提供了一个IXMLDOMDocument,那么您将从msxml获得一个异常:
混合来自不同版本的MSXML的对象是一个错误。
微软内部可以问一个接口,它来自什么版本的MSXML,我需要访问相同的东西。
考虑用伪代码编写的下列假设函数:
String XMLTransform(IXMLDOMNode xml, String xsl)
{
//Create a document to hold the xml
IXMLDOMDocument2 xslDocument = new CoDOMDocument();
//load the xsl string into the xsl dom document
xslDocument.loadXML(xsl);
//transform the xml
return xml.transformNode(xslDocument);
}问题是,如果IXMLDOMNode来自,MSXML6说。创建的DOMDocument来自第3版(因为微软的版本依赖于MSXML)。这将导致
xml.transformNode()若要抛出COM异常:
It is an error to mix objects from different versions of MSXML.既然微软能够问一个界面它来自什么版本的MSXML,那么我应该能够做同样的事情,但是怎么做呢?
另外,给定一个IXMLDOMNode,如何构造相同版本的XMLDOMDocument对象.
发布于 2010-05-11 17:46:18
我想出了一个答案(至少对MSXMLVersion6.0有效)。
接口类型:
DOMDocument60它是从IXMLDOMDocument30派生而来的,而大多数人使用IXMLDOMDocument或IXMLDOMDocument2。
因此,如果传递的接口至少不支持IXMLDOMDocument3,那么我知道对象至少不是version 6:
procedure DoStuff(doc: IXMLDOMdocument2);
begin
if not (doc is IXMLDOMDocument3) then
raise Exception.Create('badness');
...
end;或者交替地:
procedure DoStuff(doc: IXMLDocument2);
begin
if not (doc is DOMDocument6) then
begin
DoStuffLegacyImplementation(doc);
Exit;
end;
//Real implementation
...
end;https://stackoverflow.com/questions/1477559
复制相似问题