Alberto:
Thanks for your hint.

Steps were as follows:
- receive xml fragments time by time
- save to hdd
- load xml into buffer
- forward buffer to xmlhandler
- parse with xerces

Below is the code i loaded the xml into buffer:

                // reading from file, then forward buffer to xml handler
                std::string strfile ( (char*)a_data );
                ifstream file ( strfile.c_str(), ios::in );
                char* buffer = new char [a_size];

                file.read ( buffer, a_size );

                // fwd buffer to xmlhandler an parse with xerces

Anyway, i left the 'load xml to buffer' completely and forwarded just the 
filename to xerces. Which seems a cleaner solution to me. Adding ios::binary 
didn't work either. The problem just occurs on this special kind of 
buffer/filelenght. There's no problem if the size is smaler.

The new steps are:
- receive xml fragments time by time
- save to hdd
- forward filename to xmlhandler
- parse with xerces

Thanks for your help, folks. Issue solved due to my needs.

Matthias

-----Original Message-----
From: Alberto Massari [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, June 03, 2008 10:06 AM
To: [email protected]
Subject: Re: MemBufInputSource: Unknown Exception

The exception should be an UTFDataFormatException, that complains about an 
invalid UTF-8 structure; if the XML can be parsed when is on the disk, maybe 
the code that loads it has a bug (maybe you are opening it as a text stream, 
and single \n gets turned into \n\r)

Alberto


Matthias Höpfer wrote:
> Dave:
> You're right, i'm using Visual Studio (6.0 beeing exactly). I catch an 
> '...(KERNEL32.DLL): 0xE06D7363: Microsoft C++ Exception.'. Stepping through  
> the calling stack didn't help me (me, but maybe someone else...) any further.
>
> KERNEL32! 7c812a5b()
> MSVCRTD! [EMAIL PROTECTED] + 57 bytes 
> xercesc_2_8::XMLUTF8Transcoder::checkTrailingBytes(const unsigned char 
> 205, const unsigned int 1, const unsigned int 1) line 110 
> xercesc_2_8::XMLUTF8Transcoder::transcodeFrom(const unsigned char * 
> const 0x01afcc67, const unsigned int 6807, unsigned short * const 
> 0x01ad8c24, const unsigned int 16384, unsigned int & 36826000, 
> unsigned char * const 0x01ae0c28) line 246 
> xercesc_2_8::XMLReader::xcodeMoreChars(unsigned short * const 
> 0x01ad8c24, unsigned char * const 0x01ae0c28, const unsigned int 
> 16384) line 1751 + 78 bytes
> xercesc_2_8::XMLReader::refreshCharBuffer() line 547 + 42 bytes 
> xercesc_2_8::XMLReader::getNextChar(unsigned short & 59792) line 714 + 
> 8 bytes
> xercesc_2_8::ReaderMgr::getNextChar() line 95 + 15 bytes 
> xercesc_2_8::IGXMLScanner::scanAttValue(const xercesc_2_8::XMLAttDef * 
> const 0x00000000, const unsigned short * const 0x01b0cb88, 
> xercesc_2_8::XMLBuffer & {...}) line 2319 + 14 bytes 
> xercesc_2_8::IGXMLScanner::scanStartTag(unsigned char & 1) line 1860 + 
> 32 bytes
> xercesc_2_8::IGXMLScanner::scanContent() line 899 
> xercesc_2_8::IGXMLScanner::scanDocument(const xercesc_2_8::InputSource 
> & {...}) line 214 + 8 bytes 
> xercesc_2_8::AbstractDOMParser::parse(const xercesc_2_8::InputSource & 
> {...}) line 519 CXmlHandler::parseDataRequest(const unsigned int 
> 39610, const unsigned char * 0x01ec2b10) line 66 + 17 bytes
>
> I still don't know what's wrong. (Therefore i included the calling 
> stack. Maybe someone's got a clue...)
>
> At the moment i'm thinking about inserting an switch deciding between memory 
> or file input. But i'd definitely prefer the memory input source.
>
> Matthias
>
> -----Original Message-----
> From: David Bertoni [mailto:[EMAIL PROTECTED]
> Sent: Monday, June 02, 2008 7:45 PM
> To: [email protected]
> Subject: Re: MemBufInputSource: Unknown Exception
>
> Matthias Hopfer wrote:
>   
>> Hi all,
>>
>> Currently i'm trying to parse a well formed xml from memory via 
>> MemBufInputSource.
>>
>> // init above works fine
>> // code start
>>     
> ...
>
>   
>>       catch (...) 
>>      {
>>         TRACE ( _T("CXmlHandler::parseDataRequest(): catched UKNOWN
>> Exception\n") );
>>       }
>> //...
>> }
>> // code end
>>
>> Every time i catch an 'Unknown Exception' and i don't know why. If 
>> i'm parsing the file directly from HDD, it works without any errors. 
>> The file itself is a wellformed xml but pretty 'huge' (39610 bytes).
>> Assuming that there are no mistakes reading the file into memory (did 
>> it quite often...=), i have absolutely no clue what i'm doing wrong.
>>
>> Anybody hints?
>>     
> If I had to guess, I would say it's an access violation.  However, instead of 
> having us guess, you might want to run this in the debugger. 
> It looks like you're using Visual Studio, so the debugger will display the 
> type of exception in the output window.  You can also configure the debugger 
> to break when an exception is thrown, which will help you determine where the 
> exception is thrown.
>
> Dave
>
>   

Reply via email to