Загрузка XML из памяти с помощью Xerces - PullRequest
0 голосов
/ 09 марта 2012

У меня есть некоторые разумные данные XML, которые я бы хотел проанализировать с помощью Xerces (сгенерированных CodeSynthesis).

На диске он зашифрован, поэтому я загружаю его, дешифрую и ... Я застрял, поскольку Xerces принимает только файлы в качестве входных данных.

Я думал о перегрузке одного из «читателей» (т. Е. Std :: istream или xercesc :: InputSource) и фальсификации чтения диска, но это выглядит так же странно, как и не элегантно.

Есть ли более простой и аккуратный способ сделать это?

Спасибо!

1 Ответ

5 голосов
/ 09 марта 2012

Вы можете использовать <a href="http://xerces.apache.org/xerces-c/apiDocs-2/classMemBufInputSource.html" rel="noreferrer">MemBufInputSource</a> класс:

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());
...