c++xmlparsingxerces-c

Making Xerces parse a string instead of a file


I know how to create a complete dom from an xml file just using XercesDOMParser:

xercesc::XercesDOMParser parser = new xercesc::XercesDOMParser();
parser->parse(path_to_my_file);
parser->getDocument(); // From here on I can access all nodes and do whatever i want

Well, that works... but what if I'd want to parse a string? Something like

std::string myxml = "<root>...</root>";
xercesc::XercesDOMParser parser = new xercesc::XercesDOMParser();
parser->parse(myxml);
parser->getDocument(); // From here on I can access all nodes and do whatever i want

I'm using version 3. Looking inside the AbstractDOMParser I see that parse method and its overloaded versions, only parse files.

How can I parse from a string?


Solution

  • Create a MemBufInputSource and parse that:

    xercesc::MemBufInputSource myxml_buf(myxml.c_str(), myxml.size(),
                                         "myxml (in memory)");
    parser->parse(myxml_buf);