使用Xerces从内存加载xml

Val*_*ond 0 c++ xml memory file xerces

我得到了一些我想用Xerces解析的合理的xml数据(由CodeSynthesis生成).

在光盘上它是加密的,所以我加载它,解密它...我被卡住,因为Xerces只接受文件作为输入.

我曾考虑过重载一个'读者'(即.std :: istream或xercesc :: InputSource)并伪造光盘读数,但它看起来像古怪而不优雅.

有没有更简单和更简洁的方法来做到这一点?

谢谢!

Ral*_*alf 5

你可以使用这个MemBufInputSource类:

MemBufInputSource* pMemBufIS = new MemBufInputSource((const XMLByte*)sXmlContent.c_str(), sXmlContent.length(), "SysID", false);
m_saxParser.parse(*pMemBufIS);
delete pMemBufIS;
Run Code Online (Sandbox Code Playgroud)

代替

m_saxParser.parse(sXmlFilePath.c_str());
Run Code Online (Sandbox Code Playgroud)