nsresult nsExpatDriver::HandleComment(const PRUnichar *aValue) { NS_ASSERTION(mSink, "content sink not found!"); if (mInExternalDTD) { // Ignore comments from external DTDs return NS_OK; } if (mInInternalSubset) { mInternalSubset.AppendLiteral("<!--"); mInternalSubset.Append(aValue); mInternalSubset.AppendLiteral("-->"); } else if (mSink) { nsresult rv = mSink->HandleComment(aValue); MaybeStopParser(rv); } return NS_OK; }
// convert a String to QSgml void QSgml::String2Sgml(const QString &SgmlString) { QSgmlTag *LastTag; QString sDummy; int iPos = 0; int iStart = 0,iEnd = 0; QList<QString>::iterator i; sSgmlString = SgmlString; DocTag->Children.clear(); LastTag = DocTag; do { // Handle exception-tags for( i = tagExeption.begin(); i!=tagExeption.end(); ++i ) { QString sName = *i; if( LastTag->Name.toLower()==sName ) // its an exception-tag { iPos = SgmlString.toLower().indexOf("</" + sName,iPos); iPos--; } } FindStart(SgmlString,iPos); // no new start if( iPos==-1 ) { LastTag->Children.append( EndTag ); break; } // there was CDATA else if( iPos > iEnd + 1 ) { HandleCdata(SgmlString,LastTag,iStart,iEnd,iPos); } // this is a comment if( (SgmlString.at(iPos + 1)=='!')&&(SgmlString.at(iPos + 2)=='-')&&(SgmlString.at(iPos + 3)=='-') ) { HandleComment(SgmlString,LastTag,iStart,iEnd,iPos); } // this is a PI // else if( SgmlString.at(iPos+1)=='?' ) // { // HandleDoctype(SgmlString,LastTag,iStart,iEnd,iPos); // } // this is a Doctype else if( SgmlString.at(iPos + 1)=='!' ) { HandleDoctype(SgmlString,LastTag,iStart,iEnd,iPos); } // this is an Endtag else if( SgmlString.at(iPos + 1)=='/' ) { HandleEndTag(SgmlString,LastTag,iStart,iEnd,iPos); } // this is an Starttag of Standalone else { HandleStartTag(SgmlString,LastTag,iStart,iEnd,iPos); } } while( iPos!=-1 ); }