xerces - c++修改节点属性值

   # include   # include   # include   # include   使用名称空间xercesc;   XMLReader类   {   公众:   XMLReader (): m_configFileParser (NULL), m_rootNode (NULL) {};   XMLReader ~ ();   bool初始化()   {   试一试   {   将XMLPlatformUtils:初始化();   }   抓住(XMLException & e)   {   char *消息=XMLString:: transcode (e.getMessage ());   syslog (LOG_ERR“XML工具包初始化错误:% s”,消息);   XMLString::释放(消息);   返回错误;   }   m_rootNode=XMLString:: transcode (“bean”);   m_configFileParser=new XercesDOMParser;   返回true;    };   空白readConfigFile (const char *);   私人:   xercesc: XercesDOMParser * m_configFileParser;   XMLCh * m_rootNode;   };   XMLReader XMLReader:: ~ ()   {   试一试   {   删除m_configFileParser;   m_configFileParser=零;   XMLString::释放(&m_rootNode);   }   抓住(…)   {   syslog (LOG_ERR,“未知异常中遇到TagNamesdtor”);   }   试一试   {   将XMLPlatformUtils:终止();   }   抓住(xercesc:: XMLException& e)   {   char *消息=xercesc:: XMLString::码(e.getMessage ());   syslog (LOG_ERR“XML ttolkit清除错误:% s”,消息);   XMLString::释放(消息);   }   }   XMLReader无效:readConfigFile (const char * configFile)   {   m_configFileParser -> setValidationScheme (XercesDOMParser:: Val_Never);   m_configFileParser -> setDoNamespaces(假);   m_configFileParser -> setDoSchema(假);   m_configFileParser -> setLoadExternalDTD(假);   试一试   {   m_configFileParser ->解析(configFile);   DOMDocument * xmlDoc=m_configFileParser -> getDocument ();   xmlDoc DOMElement * elementRoot=-> getDocumentElement ();   如果(! elementRoot)   {   syslog (LOG_ERR,“空文档!”);    };      XMLCh * sslContextTag=XMLString:: transcode (“sslContext”);//DOMNodeList xmlDoc * elementRoot=-> getElementsByTagName (sslContextTag);   xmlDoc DOMNodeList *孩子=-> getElementsByTagName (sslContextTag);//elementRoot -> getChildNodes ();   const XMLSize_t nodeCount=孩子——> getLength ();   XMLCh * keyStore=XMLString:: transcode(“密钥”);   XMLCh * keyStoreTag=XMLString:: transcode (“keyStorePassword”);   XMLCh * trustStoreTag=XMLString:: transcode (“trustStorePassword”);   (XMLSize_t xx=0; xx 项目(xx);   如果(currentNode -> getNodeType ()==DOMNode:: ELEMENT_NODE)   {   DOMElement * currentElement=dynamic_cast (currentNode);   如果(XMLString::=(currentElement -> getTagName (), sslContextTag) & & currentElement -> hasAttribute(密钥))   {   XMLCh * xmlch_pass=XMLString:: transcode(“密码”);   currentElement -> setAttribute (keyStoreTag xmlch_pass);   currentElement -> setAttribute (trustStoreTag xmlch_pass);   XMLString::释放(&xmlch_pass);   打破;    }   }   }   XMLString::释放(&sslContextTag);   XMLString::释放(密钥);   XMLString::释放(&keyStoreTag);   XMLString::释放(&trustStoreTag);      const XMLCh gl []={chLatin_L、chLatin_S chNull};   DOMImplementation * impl=DOMImplementationRegistry: getDOMImplementation (gl);   DOMWriter * theSerializer=((DOMImplementationLS *) impl) -> createDOMWriter ();   如果(theSerializer -> canSetFeature (XMLUni:: fgDOMXMLDeclaration,真的)   {   theSerializer -> setFeature (XMLUni:: fgDOMXMLDeclaration,真的);   }   const char * outputXMLName=皌est.xml”;   XMLFormatTarget * localFormTarget=new LocalFileFormatTarget (outputXMLName);   尝试{   theSerializer -> writeNode (xmlDoc localFormTarget, *);   }   抓住(…){   syslog (LOG_ERR,“错误”);   }   删除localFormTarget;   }   抓住(xercesc:: XMLException& e)   {   char *消息=xercesc:: XMLString::码(e.getMessage ());   syslog (LOG_ERR“错误解析文件:% s”,消息);   XMLString::释放(消息);   }   }   # ifdef MAIN_TEST/*这主要提供单元测试类的。*/int main ()   {   const char * configFile=癮ctivemq.xml”;   XMLReader appConfig;   appConfig.Initialize ();   appConfig.readConfigFile (configFile);   返回0;   }   # endif


xerces - c++修改节点属性值