Доброго времени суток.
Сталкнулся с такой проблемой и попал в полный затуп:
MSXML2::IXMLDOMDocument2Ptr pDOM2;
pDOM2.CreateInstance(__uuidof(FreeThreadedDOMDocument40));
pDOM2->async = VARIANT_FALSE;
pDOM2->resolveExternals = VARIANT_FALSE;
pDOM2->loadXML("какойто xsl"); // Тут MSXML долампады XML это или XSL, главное чтоб по стандарту все было =)
pDOM2->setProperty(_bstr_t("SelectionLanguage"), _variant_t(_bstr_t("XPath")));
BppNode pNodeTest = pDOM2->selectSingleNode("/xsl:stylesheet/xsl:template/xsl:value-of");
......
При попытке выполнить selectSingleNode приложение падает, ни номера ошибки ни ее описания увидеть не могу.
Я так предполагаю, что нужно както перекастить DOM2 в DOM, но как? Или ошибка не в этом?
Здравствуйте, gato, Вы писали:
G>Доброго времени суток.
G>Сталкнулся с такой проблемой и попал в полный затуп:
G>G>MSXML2::IXMLDOMDocument2Ptr pDOM2;
G>pDOM2.CreateInstance(__uuidof(FreeThreadedDOMDocument40));
G>pDOM2->async = VARIANT_FALSE;
G>pDOM2->resolveExternals = VARIANT_FALSE;
G>pDOM2->loadXML("какойто xsl"); // Тут MSXML долампады XML это или XSL, главное чтоб по стандарту все было =)
G>pDOM2->setProperty(_bstr_t("SelectionLanguage"), _variant_t(_bstr_t("XPath")));
G>BppNode pNodeTest = pDOM2->selectSingleNode("/xsl:stylesheet/xsl:template/xsl:value-of");
G>......
G>
G>При попытке выполнить selectSingleNode приложение падает, ни номера ошибки ни ее описания увидеть не могу.
G>Я так предполагаю, что нужно както перекастить DOM2 в DOM, но как? Или ошибка не в этом?
что-то типа
pDOM2->setProperty(_bstr_t("SelectedNamespaces"), _variant_t(_bstr_t("xsl="http://w3c.com/XSL"")));
Здравствуйте, gato, Вы писали:
G>При попытке выполнить selectSingleNode приложение падает, ни номера ошибки ни ее описания увидеть не могу.
G>Я так предполагаю, что нужно както перекастить DOM2 в DOM, но как? Или ошибка не в этом?
Для начала необходимо ловить _com_error и обрабатывать его. Вот пример с выводом на консоль:
try
{
MSXML2::IXMLDOMDocument2Ptr pDOM2;
//...
BppNode pNodeTest = pDOM2->selectSingleNode("/xsl:stylesheet/xsl:template/xsl:value-of");
}
catch(const _com_error &e)
{
std::wcerr << L"ErrorMessage: "e.ErrorMessage() << std::endl;
if(!!e.Description())
std::wcerr << L"Description: "<< static_cast<const wchar_t*>(e.Description()) << std::endl;
}
Дальше анализируй сообщение об ошибке...
Здравствуйте, Angler, Вы писали:
A>Здравствуйте, gato, Вы писали:
G>>При попытке выполнить selectSingleNode приложение падает, ни номера ошибки ни ее описания увидеть не могу.
G>>Я так предполагаю, что нужно както перекастить DOM2 в DOM, но как? Или ошибка не в этом?
A>Для начала необходимо ловить _com_error и обрабатывать его. Вот пример с выводом на консоль:
A>A>try
A>{
A> MSXML2::IXMLDOMDocument2Ptr pDOM2;
A> //...
A> BppNode pNodeTest = pDOM2->selectSingleNode("/xsl:stylesheet/xsl:template/xsl:value-of");
A>}
A>catch(const _com_error &e)
A>{
A> std::wcerr << L"ErrorMessage: "e.ErrorMessage() << std::endl;
A> if(!!e.Description())
A> std::wcerr << L"Description: "<< static_cast<const wchar_t*>(e.Description()) << std::endl;
A>}
A>
A>Дальше анализируй сообщение об ошибке...
спасибо.