本文整理汇总了C++中XMLParser::parse_fragment方法的典型用法代码示例。如果您正苦于以下问题:C++ XMLParser::parse_fragment方法的具体用法?C++ XMLParser::parse_fragment怎么用?C++ XMLParser::parse_fragment使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XMLParser
的用法示例。
在下文中一共展示了XMLParser::parse_fragment方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: load_postset
void mNZB::load_postset(PostSet *set)
{
set->has_pieces_loaded = 1;
if(config->test_mode)
return;
this->set = set;
string dest_dir = config->blackbeard_data_dir + "/" + set->group->name;
string full_filename = dest_dir + "/" + nzb_filename() + ".bz2";
console->log("full filename is " + full_filename);
if(!_file_exists(full_filename)) {
// console->log("Ouch! " + full_filename + " does not exist - could NOT load NZB");
set->has_pieces_loaded = 1;
return;
}
string compressed_file_contents;
char readbuf[MNZB_BUFFER_SIZE];
FILE* f;
BZFILE* b;
int nBuf;
int bzerror;
f = fopen ( full_filename.c_str(), "rb" );
if ( !f ) {
console->log("bzip2 read errror!");
/* handle error */
}
b = BZ2_bzReadOpen ( &bzerror, f, 0, 0, NULL, 0);
if ( bzerror != BZ_OK ) {
BZ2_bzReadClose ( &bzerror, b );
console->log("bzip2 read errror!");
/* handle error */
}
bzerror = BZ_OK;
int got_bytes = 0;
while ( bzerror == BZ_OK ) {
nBuf = BZ2_bzRead ( &bzerror, b, readbuf + got_bytes, MNZB_BUFFER_SIZE - got_bytes);
got_bytes += nBuf;
if ( (bzerror == BZ_OK) || (bzerror == BZ_STREAM_END) ) {
/* do something with buf[0 .. nBuf-1] */
int i=0;
int last_string = 0;
while(i<got_bytes){
if(readbuf[i] == '\n') {
readbuf[i] = 0;
compressed_file_contents.append(readbuf + last_string);
last_string = i + 1;
}
i++;
}
memmove(readbuf, readbuf + last_string, got_bytes - last_string);
got_bytes -= last_string;
}
}
readbuf[got_bytes] = 0;
compressed_file_contents.append(readbuf);
if ( bzerror != BZ_STREAM_END ) {
BZ2_bzReadClose ( &bzerror, b );
console->log("bzip2 read errror!!!");
/* handle error */
} else {
BZ2_bzReadClose ( &bzerror, b );
}
fclose(f);
XMLParser *parser = new XMLParser();
parser->parse_fragment(compressed_file_contents);
XMLNode *parsed = parser->document_node;
delete parser;
//XMLNode *parsed = parse_xml_file(full_filename);
vector<XMLNode *> files;
parsed->find_for_tag_name(files, "file");
vector<XMLNode *>::iterator i;
for(i = files.begin(); i != files.end(); ++i) {
restore_file(set, *i);
}
delete parsed;
}