Hello Alberto, the XMLPlatformUtils::Initialize() function leads to a crash in Xerces 2.8 The code is like:
try { XERCES_CPP_NAMESPACE::XMLPlatformUtils::Initialize(); } catch (XERCES_CPP_NAMESPACE::XMLException& e) { CString cstrTraceMsg; cstrTraceMsg.Format(_T("ERROR: Internal DOM Error - An error occurred during creation of output transcoder. Exception code: %d Msg is : %s"), e.getCode(),e.getMessage()); TRACE_ERROR(CLString(cstrTraceMsg),ERR_DOM_OPERATION_FAILED); } catch(...) { TRACE_INFO("CSPVXMLParserWrapper::CreateDOMTree() XMLPlatformUtils::Initialize - threw an exception"); } I always get the control into the generic catch block than the XMLException catch when could this happen? any idea? regards, Pranav On Mon, Dec 1, 2008 at 6:00 PM, Alberto Massari <[EMAIL PROTECTED]>wrote: > Pranav Savkur wrote: > >> hi alberto, >> what is the encoding i have to set for the CT2CA object? how do i do >> this? please let me know >> >> > > It all depends on what that class does (and being a user defined class, you > should know it): I can only guess it's US-ASCII, i.e. > > memBufIS->setEncoding(XMLUni::fgUSASCIIEncodingString); > > But you can get better informations by debugging your application and > finding out what exception is being thrown and which part of the parser > throws it. > > Alberto > > > regards, >> Pranav >> >> On Mon, Dec 1, 2008 at 3:31 PM, Alberto Massari <[EMAIL PROTECTED] >> >wrote: >> >> >> >>> Pranav Savkur wrote: >>> >>> >>> >>>> Hello Alberto, thanks for replying. >>>> 1.i do hav an XMLException block but the control does not come here >>>> 2. i have deleted the wrapper4inputsource now >>>> 3.its just that the m_XMLFileName in this case contains the XML string >>>> itself and not really the file name. >>>> >>>> >>>> >>>> >>> If m_XMLFileName contains an XML string, and you really need to convert >>> it >>> to a different encoding using the CT2CA object, you should invoke >>> setEncoding on the MemBufInputSource to tell the parser to ignore the >>> encoding declaration contained in the XML stream. >>> If this also fails, you should just try running the program in the >>> debugger >>> and see what exception is really thrown. >>> >>> Alberto >>> >>> >>> Is it correct the way the parameters to MembufInput source are data >>> typed? >>> >>> >>>> We are using VS2005 with Xerces 2.8 >>>> >>>> On Mon, Dec 1, 2008 at 3:11 PM, Alberto Massari < >>>> [EMAIL PROTECTED] >>>> >>>> >>>>> wrote: >>>>> >>>>> >>>> >>>> >>>> >>>>> A few things that you should check: >>>>> 1) add a catch handler for XMLException, and check what getMessage >>>>> says; >>>>> using only the catch(...) will not give you any information on the real >>>>> cause of the error >>>>> 2) why are you declaring a Wrapper4InputSource object if you are not >>>>> using >>>>> it? >>>>> 3) the MemBufInputSource class must be used to hold an XML fragment, >>>>> but >>>>> you are constructing it around a variable named m_XMLFileName; if this >>>>> variable holds a file name (instead of the file content) you should use >>>>> LocalFileInputSource >>>>> >>>>> Alberto >>>>> >>>>> >>>>> Pranav Savkur wrote: >>>>> >>>>> >>>>> >>>>> >>>>> >>>>>> I have one implementation in Xerces C++ 2.8 where in I have this code: >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>> try >>>>>>> { >>>>>>> //const XMLCh* const bufID = NULL; >>>>>>> const XMLCh *const bufId = _T("SPVoice"); >>>>>>> //static const TCHAR* bufID = "SPVoice"; >>>>>>> CT2CA pszConvertedAnsiString (m_XMLFileName); >>>>>>> std::string strStd (pszConvertedAnsiString); >>>>>>> >>>>>>> const char* pStr = strStd.c_str(); >>>>>>> //char* TCHAR = StringToChar(m_XMLFileName); >>>>>>> >>>>>>> TRACE_INFO("CSPVXMLParserWrapper::CreateDOMTree() converted >>>>>>> StringToChar"); >>>>>>> >>>>>>> MemBufInputSource* memBufIS = new >>>>>>> MemBufInputSource( >>>>>>> (const XMLByte *)pStr >>>>>>> ,strlen(pStr) >>>>>>> , bufId >>>>>>> , false >>>>>>> ); >>>>>>> >>>>>>> TRACE_INFO("CSPVXMLParserWrapper::CreateDOMTree() formed >>>>>>> MemBufInputSourceObject Successfully"); >>>>>>> >>>>>>> m_pDOMParser->setDoNamespaces(false); >>>>>>> TRACE_INFO("Entering >>>>>>> CSPVXMLParserWrapper::CreateDOMTree() SetDoNamespace set to false"); >>>>>>> >>>>>>> Wrapper4InputSource wrap(memBufIS, false); >>>>>>> >>>>>>> m_pDOMParser->parse(*memBufIS); >>>>>>> } >>>>>>> catch (...) >>>>>>> { >>>>>>> cstrTraceMsg.Format(_T("ERROR: Internal Error >>>>>>> - Unexpected exception during parsing: %s "), m_XMLFileName); >>>>>>> >>>>>>> TRACE_ERROR(CLString(cstrTraceMsg),ERR_FAILURE); >>>>>>> sifRetCode = ERR_FAILURE; >>>>>>> m_strErrorString = _T("Generic Exception >>>>>>> During Parsing the input XML File.Please check if the XML input >>>>>>> conforms to the schema"); >>>>>>> >>>>>>> } >>>>>>> >>>>>>> At the m_pDOMParser->parse(*memBufIS); The control goes into the >>>>>>> catch >>>>>>> block. >>>>>>> Can you point out any probs in the code? Without the >>>>>>> Wrapper4InputSource wrap(memBufIS, false);, this code was working in >>>>>>> Xerces 2.2 of C++ >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>> >>>> >>>> >>> >>> >> >> >> > >