Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с DOMDocument, не зугружается файл, проблема со строкой 
:(
    Опции темы
Homer
Дата 26.3.2006, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 29.12.2004

Репутация: нет
Всего: нет



Вот код:
Код

BSTR str=file.GetFileName().AllocSysString();
VARIANT_BOOL bSuccess = false;
HRESULT hr = exDoc.CoCreateInstance(__uuidof(DOMDocument)); tst(hr);
hr = exDoc->load(CComVariant(str), &bSuccess);    tst(hr);


Здесь в принципе ошибок не возникает, но далее:
Код

CComPtr<IXMLDOMNode> exNode;
hr=exDoc->selectSingleNode(L"/*",&exNode); tst(hr);


в лучшем случае функция возвращает ошибку, в худшем прокатывает, но узел exNode не изменяется(0х00000000) и сами представляете, что потом происходит. Вобщем из exDoc вообще ничего нельзя вытянуть smile

Но! если написать:
Код

hr = exDoc->load(CComVariant(L"../Xml/ACLab.xml"), &bSuccess);    tst(hr);


то все работает. Но такой вариант меня конечно не устраивает. Я думаю, здесь какая то проблема с кодировкой строки, но уже все испробовал, ничего не получается, помогите люди добрые, может кто сталкивался.
заранее спасибо


PM MAIL   Вверх
Nuzur
Дата 27.3.2006, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

Репутация: 3
Всего: 5



Вот так точно работает, хотя я как-то не очень понял как вы так лихо то exDoc-> то exDoc. ет наверно для продвинутых спецов smile

Код

        EVAL_HR(CoInitialize(NULL));

        MSXML2::IXMLDOMDocument2Ptr pXMLDom = NULL;
        EVAL_HR(pXMLDom.CreateInstance("Msxml2.DOMDocument.4.0"));
        pXMLDom->load(m_strPath.AllocSysString());

        MSXML2::IXMLDOMNodePtr pNode = NULL, pNodeHelper = NULL;
        MSXML2::IXMLDOMElementPtr pRootElem = NULL;

        // Get root element
        EVAL_HR(pXMLDom->get_documentElement(&pRootElem));

        pNode = pRootElem->selectSingleNode(_bstr_t("UNode"));


где m_strPath путь к вашему файлу, CString как не сложно догадаться.
Ну и потом CoUninitialize(); конечно не забыть, УДАЧИ.


--------------------
Never again...
PM MAIL   Вверх
Homer
Дата 27.3.2006, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 29.12.2004

Репутация: нет
Всего: нет



exDoc это - CComPtr<IXMLDOMDocument> exDoc;

Спасибо Nuzur, но ничего не изменилось, в pRootElem так же ничего не загружается, так и остается NULL.
Мне кажется, что необходимо включить в программу Unicode, почти везде в MSDN примерах он используется. Но вот не знаю как это сделать, пишу в чистом проекте, где нет строковых функций и переменных:
#define _UNICODE
#include "tchar.h"
и вылезает ошибка: msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16

И еще вопрос, нужно ли каждый раз писать CoInitialize(NULL) и CoUninitialize(), или хватит созданных визардом в CExemelApp::InitATL() и CExemelApp::ExitInstance()??
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0604 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.