Как я могу спросить, какая версия MSXML IXMLDOMDocument2 есть? Учитывая IXMLDOMDocument2 Мне нужно создать другой документ той же версии.MSXML: Как спросить IXMLDOMNode, из какой версии MSXML он приходит?
Если вы даете IXMLDOMDocument от различных версий MSXML, вы получите исключение из MSXML:
Это ошибка смешивать объекты из различных версий MSXML.
Microsoft внутренне может спросить интерфейс, из какой версии 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 (из-за зависимости версии Microsoft от MSXML). Это приведет к тому,
xml.transformNode()
бросить COM исключение:
It is an error to mix objects from different versions of MSXML.
Поскольку Microsoft имеет возможность задать интерфейс, какую версию MSXML он пришел, я должен быть в состоянии сделать то же самое, но как?
Alternativly, дается IXMLDOMNode
, как я могу построить XMLDOMDocument
объект той же версии ...