Парсер Xerces C ++ SAX для блока написания XML-кода

Как я могу написать или обновить существующий XML-файл, используя часть кода xerces SAX parser.Reader, упомянутую ниже, и с нетерпением ожидаем записи XML-файла в том же блоке кода. Считыватель SAX-анализатора инициализирован и может проанализировать документ и показать результат, но я не могу записать файл соответствующим образом. Если кто-нибудь может помочь мне написать тот же файл с помощью Xerces. Я использую инструмент Qt Creator для разработки.
Совместное использование кода будет оценено
Мой код показан ниже.

#include <iostream>
#include <map>

#include <xercesc/parsers/SAXParser.hpp>
#include <xercesc/util/PlatformUtils.hpp>
#include <xercesc/util/XMLString.hpp>
#include <xercesc/util/OutOfMemoryException.hpp>

#include "handler.hpp"
using namespace std;
using namespace xercesc;

static void printDict( map<string,string> * dict, string name = "" )
{
if ( dict == 0 )
return;
if ( name.size() > 0 )
cout << "Dictionary: " << name  << endl;
for ( auto i : *dict ) {
cout << i.first << " -> "  << i.second << endl;
}
}int main( int argc, char **argv )
{
try {
// Initialize the Xerces system.
XMLPlatformUtils::Initialize();
}
catch (const XMLException& e) {
cerr << "Xerces system initialization failed: " << e.getMessage() << endl;
return 1;
}

// Parse document here
SAXParser *parser = new SAXParser;
parser->setValidationScheme( SAXParser::Val_Auto );
parser->setDoNamespaces( true ); // default: false
parser->setDoSchema( true );  // default: false
parser->setHandleMultipleImports( true );
parser->setValidationSchemaFullChecking( false );

DictionaryHandler handler;
parser->setDocumentHandler( &handler );
parser->setErrorHandler( &handler );
parser->setDTDHandler( &handler ); // use default behavior

int errors = 0;

try {
handler.resetErrors();
parser->parse( "C:/Users/home/Documents/Parse/dictionary.xml" );

cout << "Warnings : " << handler.getWarningCount() << endl;
cout << "Errors   : " << handler.getErrorCount() << endl;

// use hanlder output here
printDict( handler.getDictionary(), handler.getDictionaryName() );
}
catch (const OutOfMemoryException&) {
cerr << "OutOfMemoryException" << endl;
errors++;
}
catch (const XMLException& e) {
cerr << "XMLException" << endl;
char *message = XMLString::transcode( e.getMessage() );
cerr << "\tmessage:\t" << message << endl;
XMLString::release( &message );
errors++;
}
delete parser;

// Shutdown the Xerces system.
XMLPlatformUtils::Terminate();

return errors
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]