There is an example that does that.
The code I use is something like this:

//Load a DOMDocument from a utf-8 string
const std::string xmlfile;              //The source UTF-8 encoded xml file
DOMDocument* rslt = NULL;       //The resulting DOMDocument
string err_message;                     //For parse errors
if ( ! xmlfile.empty() ) {
        const XMLCh xml_str[] = { chLatin_X, chLatin_M, chLatin_L, chNull };
        AutoRelease<DOMLSInput> 
input(((DOMImplementationLS*)impl)->createLSInput()); //impl is from a 
getDOMImplementation
        XMLByte* xmlraw = (XMLByte*)(xmlfile.c_str());
        MemBufInputSource* mbis = new MemBufInputSource(xmlraw,xmlfile.size(), 
xml_str);
        mbis->setCopyBufToStream(false);
        input->setByteStream(mbis);
        input->setEncoding(XMLUni::fgUTF8EncodingString);
        try {
                rslt = parser->parse(input); //parser is a DOMLSParser*
        }
        catch (DOMLSException e) {
                Manager::transcode(e.getMessage(),err_message);         //use 
your preferred transcoder here
        }
        catch (DOMException e) {
                Manager::transcode(e.getMessage(),err_message);         //use 
your preferred transcoder here.
        }
        catch ( ... ) {
                err_message = "Some load error occured with an xml file.";
        }
        delete mbis; mbis=NULL;
}



> 
> Hi Folks:
> 
>   XercesDOMParser's parse() seems to require a file name for an argument.  
> 
>   I want to parse XML extracted from in an SQL blob.  I'm currently
> extracting the XML into an std::string.  I can convert it to an std::wstring
> or feed it to a stream.
> 
>   How do I parse XML that's in memory, and not in a file?
> 
>      Thanks
>      Larry
> 
> 
> -- 
> View this message in context: 
> http://old.nabble.com/Newbie---Parsing-XML-String--tp34626020p34626020.html
> Sent from the Xerces - C - Users mailing list archive at Nabble.com.
> 

Reply via email to