//----------------------------------------------------------------------- int XmlConvert(InStm *pin, const strvector &css, const strvector &fonts, const strvector &mfonts, XlitConv *xlitConv, OutPackStm *pout) { // perform pass 1 to determine fb2 document structure and to collect all cross-references inside the fb2 file UnitArray units; // The input file name is pin->UIFileName(); XMLDocument doc; doc.LoadFile(pin->UIFileName().c_str()); XMLHandle hDoc(&doc); XMLHandle fb = hDoc.FirstChildElement("FictionBook"); XMLHandle desc = fb.FirstChildElement("description"); XMLHandle titleInfo = desc.FirstChildElement("title-info"); XMLHandle genre = titleInfo.FirstChildElement("genre"); XMLHandle genreInfo = genre.FirstChild(); const char* txt = genreInfo.ToNode()->Value(); // "Ciencia-Ficción" // Now build from the above the damn epub! // Go directly to DoConvertionPass2 and substitute XML calls to make epub. // CONVERTION PASS 1 (DETERMINE DOCUMENT STRUCTURE AND COLLECT ALL CROSS-REFERENCES INSIDE THE FB2 FILE) Ptr<ConverterPass1> conv = new ConverterPass1(&units); conv->XmlScan(hDoc); //DoConvertionPass1(CreateScanner(pin), &units); //pin->Rewind(); // sanity check if (units.size() == 0) InternalError(__FILE__, __LINE__, "I don't know why but it happened that there is no content in input file!"); // perform pass 2 to create epub document //XmlConversionPass2(hDoc, css, fonts, mfonts, xlitConv, &units, pout); //DoConvertionPass2(CreateScanner(pin), css, fonts, mfonts, xlitConv, &units, pout); return 0; }
int main() { bool soundFlag = false; std::string headlines[3000]; int strCount = 0; bool storyExists = false; int pageSwitch = 0; while (true){ std::ofstream a_file ( "ESPN_NEWS.txt", std::ios::app ); CURL *curl; FILE *fp; CURLcode res; if (pageSwitch==0){ char *url = "http://sports.espn.go.com/espn/rss/news"; char outfilename[FILENAME_MAX] = "input3.xml"; curl = curl_easy_init(); if (curl) { fp = fopen(outfilename,"wb"); curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); res = curl_easy_perform(curl); curl_easy_cleanup(curl); fclose(fp); } } else if(pageSwitch==1){ char *url = "http://sports.espn.go.com/espn/rss/nfl/news"; char outfilename[FILENAME_MAX] = "input3.xml"; curl = curl_easy_init(); if (curl) { fp = fopen(outfilename,"wb"); curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); res = curl_easy_perform(curl); curl_easy_cleanup(curl); fclose(fp); } } else if(pageSwitch==2){ char *url = "http://sports.espn.go.com/espn/rss/nba/news"; char outfilename[FILENAME_MAX] = "input3.xml"; curl = curl_easy_init(); if (curl) { fp = fopen(outfilename,"wb"); curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); res = curl_easy_perform(curl); curl_easy_cleanup(curl); fclose(fp); } } else{ char *url = "http://sports.espn.go.com/espn/rss/espnu/news"; char outfilename[FILENAME_MAX] = "input3.xml"; curl = curl_easy_init(); if (curl) { fp = fopen(outfilename,"wb"); curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); res = curl_easy_perform(curl); curl_easy_cleanup(curl); fclose(fp); } } //////////////////////////////////////////////////////////////// bool loopFlag = true; bool bigLoop = true; tinyxml2::XMLDocument doc; doc.LoadFile( "input3.xml" ); XMLNode *rootnode = doc.FirstChild(); ////////////////////////////// rootnode = rootnode->NextSibling(); rootnode = rootnode->FirstChild();////////////hard code to get past the xml header into <ITEM> </ITEM portion rootnode = rootnode->FirstChild(); rootnode = rootnode->NextSibling(); /////////////////////////////////// while(loopFlag==true){ if(std::strcmp(rootnode->Value(),"item") != 0){ rootnode = rootnode->NextSibling(); } else loopFlag=false; } while(bigLoop==true){ XMLHandle safe = rootnode; if(safe.ToNode()==NULL) bigLoop=false; else{ NewsEntry *story = new NewsEntry(); rootnode = rootnode->FirstChild(); rootnode = rootnode->NextSibling(); rootnode = rootnode->FirstChild(); story->setTitle(rootnode->Value()); for(int x=0; x<strCount; x++){ if(story->getTitle().compare(headlines[x])==0){ storyExists = true; } } if(storyExists==false){ if(soundFlag==true){ PlaySound(TEXT("sportscenter.wav"), NULL, SND_FILENAME | SND_ASYNC); } std::cout<< story->getTitle() <<std::endl; a_file << story->getTitle(); a_file << "\n"; headlines[strCount] = story->getTitle(); strCount++; } rootnode = rootnode->Parent(); rootnode = rootnode->NextSibling(); rootnode = rootnode->FirstChild(); story->setDescription(rootnode->Value()); if(storyExists==false){ std::cout<< story->getDescription() <<std::endl; a_file << story->getDescription(); a_file << "\n"; } rootnode = rootnode->Parent(); rootnode = rootnode->NextSibling(); rootnode = rootnode->FirstChild(); story->setPubDate(rootnode->Value()); if(storyExists==false){ std::cout << story->getPubdate() <<std::endl; a_file << story->getPubdate(); a_file << "\n"; } rootnode = rootnode->Parent(); rootnode = rootnode->NextSibling(); rootnode = rootnode->FirstChild(); story->setLink(rootnode->Value()); if(storyExists==false){ //std::cout<< story->getLink() << std::endl; a_file << story->getLink(); a_file << "\n"; a_file << "\n"; printf("\n"); } rootnode = rootnode->Parent(); rootnode = rootnode->Parent(); rootnode = rootnode->NextSibling(); delete story; storyExists = false; } } pageSwitch++; if(pageSwitch>3){ pageSwitch = 0; soundFlag=true; } a_file.close(); Sleep(100000); } return 0; }