Re[4]: msxml parser - НЕПОНИМАЮ!
От: ZORK Россия www.zorkaltsev.com
Дата: 12.11.01 15:09
Оценка:
Здравствуйте IT, Вы писали:

IT>Здравствуйте svld, Вы писали:


IT>Вот тебе пример, который выводит две двойки:


IT>
IT>#include "stdafx.h"
IT>#include <iostream.h>
IT>#import <msxml3.dll>

IT>void main()
IT>{
IT>    ::CoInitialize(NULL);
IT>    try {    
IT>        using namespace MSXML2;
IT>        IXMLDOMDocumentPtr doc(__uuidof(DOMDocument));
IT>        doc->loadXML(
IT>            L"<?xml version=\"1.0\"?>"
IT>            L"<root>"
IT>            L"<info>TEXT1</info>"
IT>            L"<info>TEXT2</info>"
IT>            L"</root>"
IT>        );
IT>    
IT>        IXMLDOMElementPtr root = doc->selectSingleNode(L"root");
IT>        IXMLDOMNodeListPtr node = root->selectNodes(L"info"); 
IT>        long num = node->Getlength();
IT>        cout 
IT>            << num 
IT>            << endl
IT>            << doc->selectNodes(L"root/info")->Getlength()
IT>            << endl;
IT>    } catch (_com_error& er) {
IT>        cout
IT>            << er.ErrorMessage()
IT>            << endl;
IT>    } 
IT>    ::CoUninitialize();
IT>}
IT>


Насколько я знаю L"..." не является полноценным аналогом [b/]BSTR[/b], в частности для функции ::SysStringLen(), так что, использование L"..." в BSTR параметрах, является опастной практикой, так как оно может и не сработать. Другими словами, использование L"..." для BSTR параметров есть предположение о реализации объекта, что, я-б сказал, не правильно.

Или я не прав?

-Zork
Думать надо ...головой :)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.