code: private void parseContent() throws Exception {
          char c;
  
          while (true) {
              // consume characters (or ignorable whitspace) until delimiter
              parseCharData();
  
              // Handle delimiters
              c = readCh();
              switch (c) {
                  case '&': // Found "&"
                      c = readCh();
                      if (c == '#') {
                          parseCharRef();
                      } else {
                          unread(c);
                          parseEntityRef(true);
                      }
                      isDirtyCurrentElement = true;
                      break;
  
                  case '<': // Found "<"
                      dataBufferFlush();
                      c = readCh();
                      switch (c) {
                          case '!': // Found "<!"
                              c = readCh();
                              switch (c) {
                                  case '-': // Found "<!-"
                                      require('-');
                                      isDirtyCurrentElement = false;
                                      parseComment();
                                      break;
                                  case '[': // Found "<!["
                                      isDirtyCurrentElement = false;
                                      require("CDATA[");
                                      handler.startCDATA();
                                      inCDATA = true;
                                      parseCDSect();
                                      inCDATA = false;
                                      handler.endCDATA();
                                      break;
                                  default:
                                      fatal("expected comment or CDATA section",
                                              c, null);
                                      break;
                              }
                              break;
  
                          case '?': // Found "<?"
                              isDirtyCurrentElement = false;
                              parsePI();
                              break;
  
                          case '/': // Found "</"
                              isDirtyCurrentElement = false;
                              parseETag();
                              return;
  
                          default: // Found "<" followed by something else
                              isDirtyCurrentElement = false;
                              unread(c);
                              parseElement(false);
                              break;
                      }
              }
          }
      }
docs: Parse the content of an element.
  
  <pre>
  [43] content ::= (element | CharData | Reference
  | CDSect | PI | Comment)*
  [67] Reference ::= EntityRef | CharRef
  </pre>
  
  <p>
  NOTE: consumes ETtag.