Пример #1
0
String *DocumentBuilder::consumeEntityRef(bool useExtEnt){
  consume("&", 1);
  StringBuffer *sb = new StringBuffer(10);
  while(peek() != ';'){
    sb->append(get());
  }
  get();

  const String *ent = entitiesHash.get(sb);
  const String *extEnt = null;
  if (useExtEnt){
    extEnt = extEntitiesHash.get(sb);
  };
  delete sb;

  if (ent == null && extEnt == null){
    throw ParseException(DString("Undefined Entity Reference"));
  }
  if (ent != null){
    return new StringBuffer(ent);
  }
  if (extEnt != null){
    if (er == null) return null;
    InputSource *is = er->resolveEntity(null, extEnt);
    const byte *bytes = is->openStream();
    int length = is->length();
    src_overflow = new SString(DString(bytes, length));
    delete is;
    return null;
  }
  return null;
}
Пример #2
0
void ConsoleTools::forward(){
  InputSource *fis = InputSource::newInstance(inputFileName);
  const byte *stream = fis->openStream();
  DString eStream(stream, fis->length(), inputEncodingIndex);

  Writer *outputFile = null;
  try{
    if (outputFileName != null) outputFile = new FileWriter(outputFileName, outputEncodingIndex, bomOutput);
    else outputFile = new StreamWriter(stdout, outputEncodingIndex, bomOutput);
  }catch(Exception &e){
    fprintf(stderr, "can't open file '%s' for writing:", outputFileName->getChars());
    fprintf(stderr, e.getMessage()->getChars());
    return;
  }

  outputFile->write(eStream);

  delete outputFile;
  delete fis;
}