diff options
| author | manzerbredes <loic.guegan_secondary@yahoo.fr> | 2015-03-13 15:07:21 +0400 |
|---|---|---|
| committer | manzerbredes <loic.guegan_secondary@yahoo.fr> | 2015-03-13 15:07:21 +0400 |
| commit | 802410f7a3bdf2db3823f96e122bf1db45bf6a85 (patch) | |
| tree | b761182cd6a6cf47e75b168614b414fd1b5e089e /ParserClass/FileManParser.cpp | |
| parent | 34b47f8e08eff519f6c8372f2e4ce5b24267614c (diff) | |
| parent | c113e7b5f46a3434f017de3f2c9f83a002b246f1 (diff) | |
Merge branch 'PARSER'
Diffstat (limited to 'ParserClass/FileManParser.cpp')
| -rw-r--r-- | ParserClass/FileManParser.cpp | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/ParserClass/FileManParser.cpp b/ParserClass/FileManParser.cpp new file mode 100644 index 0000000..66e3c52 --- /dev/null +++ b/ParserClass/FileManParser.cpp @@ -0,0 +1,133 @@ +/** + * @file FileManParser.cpp + * @brief FileManParser class definitions + * @author manzerbredes + * @date 11 Mars 2015 + * + * Contain all implementations of FileManParser class. + * + */ + + +#include "FileManParser.hpp" + + +FileManParser::FileManParser(std::string data){ + this->data=data; + + try { + xercesc::XMLPlatformUtils::Initialize(); + } + catch (const xercesc::XMLException& toCatch) { + // Do your failure processing here + + } + + + xercesc::XercesDOMParser *parser = new xercesc::XercesDOMParser(); + xercesc::MemBufInputSource myxml_buf((const XMLByte*)this->data.c_str(), this->data.size(), "dummy",false); + + parser->parse("Doxygen/doc.xml"); + + + this->document=parser->getDocument(); + this->root=this->document->getDocumentElement(); + + this->initWebsites(); + + + +} + + + +FileManContainer FileManParser::getContainer(){ + return this->container; +} + + +std::string FileManParser::getData(){ return this->data;}; + + + +void FileManParser::initWebsites(){ + + //Get websites élément + xercesc::DOMElement* websitesElement=this->getChildByTagName(this->root, "websites"); + + //Make list of website + xercesc::DOMNodeList* websiteList=websitesElement->getChildNodes(); + XMLSize_t websiteCount = websiteList->getLength(); + + + //Read the list of website + for(int i=0;i<websiteCount;i++){ + + xercesc::DOMNode* current=websiteList->item(i); + std::string TagName=xercesc::XMLString::transcode(current->getNodeName()); + + if( current->getNodeType() == xercesc::DOMNode::ELEMENT_NODE ) { + Website newWebsite; + + //Get id + XMLCh* idXMLCh=(XMLCh*)((xercesc::DOMElement*)current)->getAttribute((XMLCh*) xercesc::XMLString::transcode("id")); + //Convert id to string from XMLCh + std::string id=xercesc::XMLString::transcode(idXMLCh); + + //Assign id + newWebsite.setId(id); + + //Assign title + newWebsite.setTitle(\ + this->getContentOfChild(dynamic_cast< xercesc::DOMElement* >( current ),"title")); + + //Assign url + newWebsite.setUrl(\ + this->getContentOfChild(dynamic_cast< xercesc::DOMElement* >( current ),"url")); + + //Assign username + newWebsite.setUsername(\ + this->getContentOfChild(dynamic_cast< xercesc::DOMElement* >( current ),"username")); + + //Assign password + newWebsite.setPassword(\ + this->getContentOfChild(dynamic_cast< xercesc::DOMElement* >( current ),"password")); + + //Assign description + newWebsite.setDescription(\ + this->getContentOfChild(dynamic_cast< xercesc::DOMElement* >( current ),"description")); + + //Add website to container + this->container.addWebsite(newWebsite); + + } + } +} + + +xercesc::DOMElement* FileManParser::getChildByTagName(xercesc::DOMElement* node, std::string TagName){ + xercesc::DOMNodeList* nodeList=node->getChildNodes(); + XMLSize_t nodeCount = nodeList->getLength(); + xercesc::DOMElement* returnElement=NULL; + + for(int i=0;i<nodeCount;i++){ + + xercesc::DOMNode* current=nodeList->item(i); + std::string currentTagName=xercesc::XMLString::transcode(current->getNodeName()); + + if( current->getNodeType() == xercesc::DOMNode::ELEMENT_NODE ) { + if(currentTagName.compare(TagName)==0){ + returnElement=dynamic_cast< xercesc::DOMElement* >( current ); + break; + } + } + } + + return returnElement; +} + + +std::string FileManParser::getContentOfChild(xercesc::DOMElement* node,std::string TagName){ + xercesc::DOMElement* child=this->getChildByTagName(node,TagName); + return xercesc::XMLString::transcode(child->getTextContent()); +} |
