selectSingleNode не работает в out-of-process COM сервере
От: IKE  
Дата: 28.06.04 07:32
Оценка:
Привет Народ!
У меня сложилась следующая проблема. Есть out-of-process сервер COM (выполнен в exe-шнике) pmpC4PM.pmpCPMPostProcessor.1
Работает все в следующем скрипте на JScript:

var  pmpost = new ActiveXObject("pmpC4PM.pmpCPMPostProcessor.1");
pmpost.Hello();

var xml_cldata = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.4.0");

xml_cldata.setProperty("NewParser",true);
xml_cldata.setProperty("SelectionLanguage","XPath");
xml_cldata.setProperty("SelectionNamespaces", "xmlns=''");


var cxm_path = "D:\\projects\\dicc00218\\pmpost\\sys\\exec\\test_drill.cxm";

var fso = new ActiveXObject("Scripting.FileSystemObject");
var cxmfile = fso.OpenTextFile(cxm_path, 1); // 1 - for reading
var cxmtext = cxmfile.ReadAll();
cxmfile.Close();
        
        
xml_cldata.loadXML(cxmtext);

// здесь selectSingleNode РАБОТАЕТ !!!!
var sss = xml_cldata.selectSingleNode("/PROGRAM");
WScript.Echo(sss.nodeName);

pmpost.OptionFile = "D:\\projects\\dicc00218\\pmpost\\sys\\exec\\Fanuc.pmopt";

pmpost.SourceFileDocument = xml_cldata;



Однако внутри COM объекта selectSingleNode отказывается работать

STDMETHODIMP pmpPMPostProcessor::put_SourceFileDocument(IDispatch* a_p_idisp)
{
  HRESULT hr;

  a_p_idisp->QueryInterface(
    MSXML2::IID_IXMLDOMDocument2,
    (void**)&m_cp_xml_doc);

  //////////////
  CComPtr<MSXML2::IXMLDOMNode> m_comptr_current_node;

  // ЭТО НЕ РАБОТАЕТ !!!
  hr = m_cp_xml_doc->selectSingleNode(L"/PROGRAM",&m_comptr_current_node);
  
  // ЭТО РАБОТАЕТ!!!
  BSTR bstr_xml;
  m_cp_xml_doc->get_xml(&bstr_xml);

  //////////////

  return hr;
}


Возможно это какие-то проблемы с маршаллингом... Помогите, пожалуйста, кто может!
Заранее спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.