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


C++ TiXmlElement::DataPos方法代码示例

本文整理汇总了C++中TiXmlElement::DataPos方法的典型用法代码示例。如果您正苦于以下问题:C++ TiXmlElement::DataPos方法的具体用法?C++ TiXmlElement::DataPos怎么用?C++ TiXmlElement::DataPos使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在TiXmlElement的用法示例。


在下文中一共展示了TiXmlElement::DataPos方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: readTestFile

int MinosTestImport::readTestFile( HANDLE ctfile )
{
   // read the stream as a sequence of Minos stanzas
   char rdbuffer[ IO_BUF_SIZE + 1 ];
   bool fileComplete = false;

   // NB - old versions might not have a proper header
   bool firstRead = true;
   std::string buffer;
   while ( !fileComplete )
   {
      DWORD chRead = 0;
      DWORD chToRead = IO_BUF_SIZE;
      bool ReadOK = ReadFile ( ctfile, rdbuffer, chToRead, &chRead, 0 );
      if ( ReadOK )
      {
         if ( chRead > 0 )
         {
            rdbuffer[ chRead ] = '\0';

            buffer += rdbuffer;
            if ( firstRead )
            {
               firstRead = false;
               iqOffset = 0;
               if ( strncmp( rdbuffer, header1, strlen( header1 ) ) == 0 )
               {
                  buffer = buffer.substr( strlen( header1 ), buffer.size() - strlen( header1 ) );  // overwriting what is there already
                  iqOffset = strlen( header1 );
               }
               else
                  if ( strncmp( rdbuffer, header2, strlen( header2 ) ) == 0 )
                  {
                     buffer = buffer.substr( strlen( header2 ), buffer.size() - strlen( header2 ) );  // overwriting what is there already
                     iqOffset = strlen( header2 );
                  }
               buffer = std::string( stubHeader ) + buffer;
            }
         }
         else
         {
            fileComplete = true;
         }

      }
      else
      {
         fileComplete = true;
      }
   }
   // and now we parse the document, and grind through the root
   buffer += "</stream:stream>";

   TiXmlBase::SetCondenseWhiteSpace( false );
   TiXmlDocument xdoc;
   xdoc.Parse( buffer.c_str(), 0 );
   TiXmlElement *tix = xdoc.RootElement();
   if ( !tix || !checkElementName( tix, "stream:stream" ) )
   {
      return 0;
   }
   int stanzas = 0;
   for ( TiXmlElement * e = tix->FirstChildElement(); e; e = e->NextSiblingElement() )
   {
      stanzas++;

      // Tiny gives us a "cursor" of row/column on the parsed data, but this
      // doesn't actually translate at all easily to a file position

      // I've added the code to get a data offset (DataPos)

      // as we get a position of the START rather than the END of a stanza,
      // we don't always get a good length, so we may need to do a "large" read in thos cases

      curfpos = iqOffset + e->DataPos() - 1 - strlen( stubHeader );
      analyseNode( this, e );
   }
   return stanzas;
}
开发者ID:BackupTheBerlios,项目名称:minos-svn,代码行数:79,代码来源:MinosTestImport.cpp


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