当前位置: 首页>>代码示例>>C++>>正文


C++ XMLParser::parse_fragment方法代码示例

本文整理汇总了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;
}
开发者ID:meleneth,项目名称:blackbeard,代码行数:90,代码来源:mnzb.cpp


注:本文中的XMLParser::parse_fragment方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。