Msxml.DOMDocument, Microsoft.XMLDOM и JScript/WSH

Я пытаюсь создать объект для работы с XML позже, но не повезло:

var objXML = new ActiveXObject( "Microsoft.XMLDOM" );
WScript.Echo("objXML:"+objXML.constructor); 

var objXML2 =  WScript.CreateObject("Msxml.DOMDocument");
WScript.Echo("objXML2:"+objXML2.constructor);

Выход

Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

objXML:undefined
objXML2:undefined

ОС: Win2003 Ent SP2

Что я делаю не так? Как я могу манипулировать файлом XML, предполагая, что я НЕ МОГУ загрузить какую-либо пользовательскую библиотеку на сервер - просто используя библиотеки Windows по умолчанию?


person Putnik    schedule 24.02.2014    source источник


Ответы (1)


Объекты, соответствующие прогидам Msxml.DOMDocument и Microsoft.XMLDOM, не предоставляют элемент с именем constructor через IDispatch.

Чтобы убедиться, что объект был успешно возвращен, вы можете попробовать использовать члены, которые являются частью интерфейса, определенного IXMLDOMDocument вместо этого.

Например, изменив свой скрипт таким образом:

var objXML = new ActiveXObject( "Microsoft.XMLDOM" );
objXML.loadXML("<x/>")
WScript.Echo("objXML:"+objXML.xml); 

var objXML2 =  WScript.CreateObject("Msxml.DOMDocument");
WScript.Echo("objXML2:"+objXML2.nodeTypeString);

дает:

objXML:<x/> 
objXML2:document

Обратите внимание, что если бы объекты не создавались, вы получили бы исключение ("Не удалось найти класс автоматизации...") в момент, когда вы пытаетесь создать, что вы бы увидели, если бы у вас была опечатка в progid, таким образом: new ActiveXObject( "MicrosoftX.MLDOM" );

person Paul Butcher    schedule 24.02.2014
comment
Как я могу пройтись по данным? Я пробовал и for (prop in objXML2){, и Enumerator(objXML2.Properties_), но безрезультатно. - person Putnik; 12.03.2014