我得到了一些想用Xerces解析的有意义的xml数据(由CodeSynthesis生成)。

在光盘上,它已加密,因此我将其加载,解密并... ...我被卡住了,因为Xerces仅将文件作为输入。

我曾考虑过要重载其中一个“读取器”(即std :: istream或xercesc :: InputSource)并伪造光盘读取内容,但它看起来似乎很古怪。

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

谢谢!

最佳答案

您可以使用MemBufInputSource类:

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


代替

m_saxParser.parse(sXmlFilePath.c_str());

10-04 10:36