#import <msxml3.dll> named_guids
using namespace MSXML2;
IXMLDOMNodePtr pChild;
IXMLDOMNodeListPtr pNodeList;
IXMLDOMNodePtr pDocRoot = m_plDomDocument->documentElement; //уже существует
pChild = pParent->selectSingleNode(L"info"); // Все находится
String str = (char*)pChild->nodeName;
pNodeList = pParent->selectNodes(L"info");
long num = pIDOMNodeList->Getlength(); // num=0 и хоть ты тресни
Такие же проблемы с getElementsByTagName(L"TEXT1")
Может кто знает что для полного счастья этой заразе надо.
Почему один метод работает, а второй нет?
Может у кого-то есть рабочий примерчик с этими методами и тестовый XML.
Интересно проверить у себя. Подозреваю, что причина в какой-то ерунде.
Но в какой?
S>#import <msxml3.dll> named_guids
S>using namespace MSXML2;
S>IXMLDOMNodePtr pChild;
S>IXMLDOMNodeListPtr pNodeList;
S>IXMLDOMNodePtr pDocRoot = m_plDomDocument->documentElement; //уже существует
S> pChild = pParent->selectSingleNode(L"info"); // Все находится
S> String str = (char*)pChild->nodeName;
S> pNodeList = pParent->selectNodes(L"info");
S> long num = pIDOMNodeList->Getlength(); // num=0 и хоть ты тресни
S>
S>Такие же проблемы с getElementsByTagName(L"TEXT1")
S>Может кто знает что для полного счастья этой заразе надо. S>Почему один метод работает, а второй нет?
C/C++ Return Values
S_OK
Value returned if successful.
E_INVALIDARG
Value returned if resultList is Null.
Remarks
The selectSingleNode method is much like the selectNodes method but returns only the first matching node rather than the list of all matching nodes.
The IXMLDOMNodeList is live and immediately reflects changes to the nodes that appear in the list.
Насколько я знаю L"..." не является полноценным аналогом [b/]BSTR[/b], в частности для функции ::SysStringLen(), так что, использование L"..." в BSTR параметрах, является опастной практикой, так как оно может и не сработать. Другими словами, использование L"..." для BSTR параметров есть предположение о реализации объекта, что, я-б сказал, не правильно.
Здравствуйте ZORK, Вы писали:
ZORK>Здравствуйте Все:
ZORK>Отбой! — я догадался, что это импортированный интерфейс, с bstr_t как паратрами. Так что все нормально. Sorry — торможу!
Будет работать, если doc есть указатель на inproc-server объект.
Дело в том, что в ненешней реализации XML'я от Майкрософт все эти методы
работают с BSTR'ами как с LPWSTR'ами.
А вот если мы имеем отмаршаленный интерфейс, то proxy/stub трактует
BSTR'ы как BSTR'ы и соответственно не работает.
Впрочем, на моей памяти маршалить XML'ный объект приходилось лиш единожды.
Обычно хватает пореслать сторку и распарсить на месте.
Здравствуйте Snax, Вы писали:
S>А вот если мы имеем отмаршаленный интерфейс, то proxy/stub трактует S>BSTR'ы как BSTR'ы и соответственно не работает.
Ну в данном случае, так как там сделанно #import без native все BSTR параметры в методах будут _bstr_t, так что L"...", будут сперва скопиранны в BSTR конструкторами _bstr_t, и только после этого переданны в COM объект, так что должно работать и с proxy.