//!====================================================================== //! @param sourcePath //! @param destinationPath //! @param patchPath //! //! @return 0 => OK //! int XmlParser::addUsbdmWizard(const char *sourcePath, const char *destinationPath, const char *patchPath) { int rc = 0; if (verbose) { cout << "Applying patches: " << patchPath <<"\n" " <= " << sourcePath << "\n" " => " << destinationPath << "\n"; } try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { char* message = XMLString::transcode(toCatch.getMessage()); cerr << "Error during XML Initialisation! :\n" << message << "\n"; XMLString::release(&message); return -1; } try { XmlParser parser; if (verbose) cerr << "Opening source: '" << sourcePath << "'" << endl; parser.openSourcefile(sourcePath); if (verbose) cerr << "Opening patch: '" << patchPath << "'" << endl; parser.openPatchfile(patchPath); if (verbose) cerr << "Parsing XML file\n"; parser.mergePatchfile(); if (verbose) cerr << "Saving result: '" << destinationPath << "'" << endl; parser.commit(destinationPath); } catch (runtime_error *ex) { cerr << "Exception while parsing, reason: " << ex->what() << endl; rc = -1; } try { xercesc::XMLPlatformUtils::Terminate(); } catch( xercesc::XMLException& e ){ cerr<< " in catch()\n"; char* message = xercesc::XMLString::transcode( e.getMessage() ) ; cerr << "XML toolkit tear-down error: " << message << endl; XMLString::release( &message ) ; rc = -1; } if (rc == 0) cout << "OK\n"; return rc; }