result = parser->Parse(stream, 0, NS_ConvertASCIItoUCS2("text/html"), PR_FALSE, PR_TRUE);
result = parser->Parse(stream, 0, NS_LITERAL_STRING("text/html"), PR_FALSE, PR_TRUE);
nsresult ParseData(char* anInputStream,char* anOutputStream) {	nsresult result=NS_OK;  if(anInputStream && anOutputStream) {    PRFileDesc* in=PR_Open(anInputStream, PR_RDONLY, 777);              if (!in) {      return NS_ERROR_FAILURE;    }    nsString   stream;    char       buffer[1024];    PRBool     done=PR_FALSE;    PRInt32    length=0;    while(!done) {      length = PR_Read(in, buffer, sizeof(buffer));      if (length>0) {        stream.AppendWithConversion(buffer,length);       }      else {        done=PR_TRUE;      }    }    PR_Close(in);    // Create a parser    nsCOMPtr<nsIParser> parser;    result = nsComponentManager::CreateInstance(kParserCID,nsnull,kIParserIID,getter_AddRefs(parser));    if (NS_SUCCEEDED(result)) {      // Create a sink      nsCOMPtr<nsILoggingSink> sink;      result = nsComponentManager::CreateInstance(kLoggingSinkCID,nsnull,kILoggingSinkIID,getter_AddRefs(sink));      if (NS_SUCCEEDED(result)) {        // Create a dtd        nsCOMPtr<nsIDTD> dtd;        result=nsComponentManager::CreateInstance(kNavDTDCID,nsnull,NS_GET_IID(nsIDTD),getter_AddRefs(dtd));        if(NS_SUCCEEDED(result)) {          // Parse the document, having the sink write the data to fp          PRFileDesc* out;          out = PR_Open(anOutputStream, PR_CREATE_FILE|PR_WRONLY, 777);                    //fstream out(anOutputStream,ios::out);          if (!out) {            return NS_ERROR_FAILURE;          }			              sink->SetOutputStream(out);          parser->RegisterDTD(dtd);	        parser->SetContentSink(sink);	        result = parser->Parse(stream, 0, NS_ConvertASCIItoUCS2("text/html"), PR_FALSE, PR_TRUE);          PR_Close(out);        }        else {          cout << "Unable to create a dtd (" << result << ")" <<endl;        }      }      else {        cout << "Unable to create a sink (" << result << ")" <<endl;      }    }    else {     cout << "Unable to create a parser (" << result << ")" <<endl;    }  }  return result;}