#include<syslog.h>#include<xercesc/dom/DOM.hpp>#include<xercesc/parsers/XercesDOMParser.hpp>#include<xercesc/framework/LocalFileFormatTarget.hpp>usingnamespacexercesc;classXMLReader{public:XMLReader():m_configFileParser(NULL),m_rootNode(NULL){};~XMLReader();boolInitialize(){try{XMLPlatformUtils::Initialize();}catch(XMLException&e){char*message=XMLString::transcode(e.getMessage());syslog(LOG_ERR,"XMLtoolkitinitializationerror:%s",message);XMLString::release(&message);returnfalse;}m_rootNode=XMLString::transcode("beans");m_configFileParser=newXercesDOMParser;returntrue;};voidreadConfigFile(constchar*);private:xercesc::XercesDOMParser*m_configFileParser;XMLCh*m_rootNode;};XMLReader::~XMLReader(){try{deletem_configFileParser;m_configFileParser=NULL;XMLString::release(&m_rootNode);}catch(...){syslog(LOG_ERR,"UnknownexceptionencounteredinTagNamesdtor");}try{XMLPlatformUtils::Terminate();}catch(xercesc::XMLException&e){char*message=xercesc::XMLString::transcode(e.getMessage());syslog(LOG_ERR,"XMLttolkitteardownerror:%s",message);XMLString::release(&message);}}voidXMLReader::readConfigFile(constchar*configFile){m_configFileParser->setValidationScheme(XercesDOMParser::Val_Never);m_configFileParser->setDoNamespaces(false);m_configFileParser->setDoSchema(false);m_configFileParser->setLoadExternalDTD(false);try{m_configFileParser->parse(configFile);DOMDocument*xmlDoc=m_configFileParser->getDocument();DOMElement*elementRoot=xmlDoc->getDocumentElement();if(!elementRoot){syslog(LOG_ERR,"emptydocument!");};XMLCh*sslContextTag=XMLString::transcode("sslContext");//DOMNodeList*elementRoot=xmlDoc->getElementsByTagName(sslContextTag);DOMNodeList*children=xmlDoc->getElementsByTagName(sslContextTag);//elementRoot->getChildNodes();constXMLSize_tnodeCount=children->getLength();XMLCh*keyStore=XMLString::transcode("keyStore");XMLCh*keyStoreTag=XMLString::transcode("keyStorePassword");XMLCh*trustStoreTag=XMLString::transcode("trustStorePassword");for(XMLSize_txx=0;xx<nodeCount;++xx){DOMNode*currentNode=children->item(xx);if(currentNode->getNodeType()==DOMNode::ELEMENT_NODE){DOMElement*currentElement=dynamic_cast<xercesc::DOMElement*>(currentNode);if(XMLString::equals(currentElement->getTagName(),sslContextTag)&&currentElement->hasAttribute(keyStore)){XMLCh*xmlch_pass=XMLString::transcode("password");currentElement->setAttribute(keyStoreTag,xmlch_pass);currentElement->setAttribute(trustStoreTag,xmlch_pass);XMLString::release(&xmlch_pass);break;}}}XMLString::release(&sslContextTag);XMLString::release(&keyStore);XMLString::release(&keyStoreTag);XMLString::release(&trustStoreTag);constXMLChgLS[]={chLatin_L,chLatin_S,chNull};DOMImplementation*impl=DOMImplementationRegistry::getDOMImplementation(gLS);DOMWriter*theSerializer=((DOMImplementationLS*)impl)->createDOMWriter();if(theSerializer->canSetFeature(XMLUni::fgDOMXMLDeclaration,true)){theSerializer->setFeature(XMLUni::fgDOMXMLDeclaration,true);}constchar*outputXMLName="test.xml";XMLFormatTarget*localFormTarget=newLocalFileFormatTarget(outputXMLName);try{theSerializer->writeNode(localFormTarget,*xmlDoc);}catch(...){syslog(LOG_ERR,"error");}deletelocalFormTarget;}catch(xercesc::XMLException&e){char*message=xercesc::XMLString::transcode(e.getMessage());syslog(LOG_ERR,"Errorparsingfile:%s",message);XMLString::release(&message);}}#ifdefMAIN_TEST/*Thismainisprovidedforunittestoftheclass.*/intmain(){constchar*configFile="activemq.xml";XMLReaderappConfig;appConfig.Initialize();appConfig.readConfigFile(configFile);return0;}#endif