//----------------------------------------------------------------------- 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; }