private void parseCompressedXml(){
  int word0;
  while (mParserOffset < mData.length) {
    word0=getLEWord(mParserOffset);
switch (word0) {
case WORD_START_DOCUMENT:
      parseStartDocument();
    break;
case WORD_STRING_TABLE:
  parseStringTable();
break;
case WORD_RES_TABLE:
parseResourceTable();
break;
case WORD_START_NS:
parseNamespace(true);
break;
case WORD_END_NS:
parseNamespace(false);
break;
case WORD_START_TAG:
parseStartTag();
break;
case WORD_END_TAG:
parseEndTag();
break;
case WORD_TEXT:
parseText();
break;
case WORD_EOS:
mListener.endDocument();
break;
default :
mParserOffset+=WORD_SIZE;
Log.w(TAG,"Unknown word 0x" + Integer.toHexString(word0) + " @"+ mParserOffset);
break;
}
}
mListener.endDocument();
}

private void parseCompressedXml ( ) { int word0 ; while ( mParserOffset < mData . length ) { word0 = getLEWord ( mParserOffset ) ; switch ( word0 ) { case WORD_START_DOCUMENT : parseStartDocument ( ) ; break ; case WORD_STRING_TABLE : parseStringTable ( ) ; break ; case WORD_RES_TABLE : parseResourceTable ( ) ; break ; case WORD_START_NS : parseNamespace ( true ) ; break ; case WORD_END_NS : parseNamespace ( false ) ; break ; case WORD_START_TAG : parseStartTag ( ) ; break ; case WORD_END_TAG : parseEndTag ( ) ; break ; case WORD_TEXT : parseText ( ) ; break ; case WORD_EOS : mListener . endDocument ( ) ; break ; default : mParserOffset += WORD_SIZE ; Log . w ( TAG , "Unknown word 0x" + Integer . toHexString ( word0 ) + " @" + mParserOffset ) ; break ; } } mListener . endDocument ( ) ; }
each tag starts with a 32 bits word ( different for start tag , end tag and end doc )
