hello has any1 faced this problem? On Mon, Dec 1, 2008 at 6:14 PM, Pranav Savkur <[EMAIL PROTECTED]>wrote:
> 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++ >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>> >>>> >>> >>> >>> >> >> >