⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlwf.c

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 C
📖 第 1 页 / 共 2 页
字号:
  characterData(fp, s, len);  puttc(T('"'), fp);  metaLocation(parser);  fputts(T("/>\n"), fp);}static voidmetaStartDoctypeDecl(void *userData,                     const XML_Char *doctypeName,                     const XML_Char *sysid,                     const XML_Char *pubid,                     int has_internal_subset){  XML_Parser parser = (XML_Parser) userData;  FILE *fp = XML_GetUserData(parser);  ftprintf(fp, T("<startdoctype name=\"%s\""), doctypeName);  metaLocation(parser);  fputts(T("/>\n"), fp);}static voidmetaEndDoctypeDecl(void *userData){  XML_Parser parser = (XML_Parser) userData;  FILE *fp = XML_GetUserData(parser);  fputts(T("<enddoctype"), fp);  metaLocation(parser);  fputts(T("/>\n"), fp);}static voidmetaNotationDecl(void *userData,                 const XML_Char *notationName,                 const XML_Char *base,                 const XML_Char *systemId,                 const XML_Char *publicId){  XML_Parser parser = (XML_Parser) userData;  FILE *fp = XML_GetUserData(parser);  ftprintf(fp, T("<notation name=\"%s\""), notationName);  if (publicId)    ftprintf(fp, T(" public=\"%s\""), publicId);  if (systemId) {    fputts(T(" system=\""), fp);    characterData(fp, systemId, tcslen(systemId));    puttc(T('"'), fp);  }  metaLocation(parser);  fputts(T("/>\n"), fp);}static voidmetaEntityDecl(void *userData,               const XML_Char *entityName,               int  is_param,               const XML_Char *value,               int  value_length,               const XML_Char *base,               const XML_Char *systemId,               const XML_Char *publicId,               const XML_Char *notationName){  XML_Parser parser = (XML_Parser) userData;  FILE *fp = XML_GetUserData(parser);  if (value) {    ftprintf(fp, T("<entity name=\"%s\""), entityName);    metaLocation(parser);    puttc(T('>'), fp);    characterData(fp, value, value_length);    fputts(T("</entity/>\n"), fp);  }  else if (notationName) {    ftprintf(fp, T("<entity name=\"%s\""), entityName);    if (publicId)      ftprintf(fp, T(" public=\"%s\""), publicId);    fputts(T(" system=\""), fp);    characterData(fp, systemId, tcslen(systemId));    puttc(T('"'), fp);    ftprintf(fp, T(" notation=\"%s\""), notationName);    metaLocation(parser);    fputts(T("/>\n"), fp);  }  else {    ftprintf(fp, T("<entity name=\"%s\""), entityName);    if (publicId)      ftprintf(fp, T(" public=\"%s\""), publicId);    fputts(T(" system=\""), fp);    characterData(fp, systemId, tcslen(systemId));    puttc(T('"'), fp);    metaLocation(parser);    fputts(T("/>\n"), fp);  }}static voidmetaStartNamespaceDecl(void *userData,                       const XML_Char *prefix,                       const XML_Char *uri){  XML_Parser parser = (XML_Parser) userData;  FILE *fp = XML_GetUserData(parser);  fputts(T("<startns"), fp);  if (prefix)    ftprintf(fp, T(" prefix=\"%s\""), prefix);  if (uri) {    fputts(T(" ns=\""), fp);    characterData(fp, uri, tcslen(uri));    fputts(T("\"/>\n"), fp);  }  else    fputts(T("/>\n"), fp);}static voidmetaEndNamespaceDecl(void *userData, const XML_Char *prefix){  XML_Parser parser = (XML_Parser) userData;  FILE *fp = XML_GetUserData(parser);  if (!prefix)    fputts(T("<endns/>\n"), fp);  else    ftprintf(fp, T("<endns prefix=\"%s\"/>\n"), prefix);}static intunknownEncodingConvert(void *data, const char *p){  return codepageConvert(*(int *)data, p);}static intunknownEncoding(void *userData, const XML_Char *name, XML_Encoding *info){  int cp;  static const XML_Char prefixL[] = T("windows-");  static const XML_Char prefixU[] = T("WINDOWS-");  int i;  for (i = 0; prefixU[i]; i++)    if (name[i] != prefixU[i] && name[i] != prefixL[i])      return 0;    cp = 0;  for (; name[i]; i++) {    static const XML_Char digits[] = T("0123456789");    const XML_Char *s = tcschr(digits, name[i]);    if (!s)      return 0;    cp *= 10;    cp += s - digits;    if (cp >= 0x10000)      return 0;  }  if (!codepageMap(cp, info->map))    return 0;  info->convert = unknownEncodingConvert;  /* We could just cast the code page integer to a void *,  and avoid the use of release. */  info->release = free;  info->data = malloc(sizeof(int));  if (!info->data)    return 0;  *(int *)info->data = cp;  return 1;}static intnotStandalone(void *userData){  return 0;}static voidshowVersion(XML_Char *prog){  XML_Char *s = prog;  XML_Char ch;  const XML_Feature *features = XML_GetFeatureList();  while ((ch = *s) != 0) {    if (ch == '/'#ifdef WIN32        || ch == '\\'#endif        )      prog = s + 1;    ++s;  }  ftprintf(stdout, T("%s using %s\n"), prog, XML_ExpatVersion());  if (features != NULL && features[0].feature != XML_FEATURE_END) {    int i = 1;    ftprintf(stdout, T("%s"), features[0].name);    if (features[0].value)      ftprintf(stdout, T("=%ld"), features[0].value);    while (features[i].feature != XML_FEATURE_END) {      ftprintf(stdout, T(", %s"), features[i].name);      if (features[i].value)        ftprintf(stdout, T("=%ld"), features[i].value);      ++i;    }    ftprintf(stdout, T("\n"));  }}static voidusage(const XML_Char *prog, int rc){  ftprintf(stderr,           T("usage: %s [-n] [-p] [-r] [-s] [-w] [-x] [-d output-dir] "             "[-e encoding] file ...\n"), prog);  exit(rc);}inttmain(int argc, XML_Char **argv){  int i, j;  const XML_Char *outputDir = NULL;  const XML_Char *encoding = NULL;  unsigned processFlags = XML_MAP_FILE;  int windowsCodePages = 0;  int outputType = 0;  int useNamespaces = 0;  int requireStandalone = 0;  int paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER;  int useStdin = 0;#ifdef _MSC_VER  _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF);#endif  i = 1;  j = 0;  while (i < argc) {    if (j == 0) {      if (argv[i][0] != T('-'))        break;      if (argv[i][1] == T('-') && argv[i][2] == T('\0')) {        i++;        break;      }      j++;    }    switch (argv[i][j]) {    case T('r'):      processFlags &= ~XML_MAP_FILE;      j++;      break;    case T('s'):      requireStandalone = 1;      j++;      break;    case T('n'):      useNamespaces = 1;      j++;      break;    case T('p'):      paramEntityParsing = XML_PARAM_ENTITY_PARSING_ALWAYS;      /* fall through */    case T('x'):      processFlags |= XML_EXTERNAL_ENTITIES;      j++;      break;    case T('w'):      windowsCodePages = 1;      j++;      break;    case T('m'):      outputType = 'm';      j++;      break;    case T('c'):      outputType = 'c';      useNamespaces = 0;      j++;      break;    case T('t'):      outputType = 't';      j++;      break;    case T('d'):      if (argv[i][j + 1] == T('\0')) {        if (++i == argc)          usage(argv[0], 2);        outputDir = argv[i];      }      else        outputDir = argv[i] + j + 1;      i++;      j = 0;      break;    case T('e'):      if (argv[i][j + 1] == T('\0')) {        if (++i == argc)          usage(argv[0], 2);        encoding = argv[i];      }      else        encoding = argv[i] + j + 1;      i++;      j = 0;      break;    case T('h'):      usage(argv[0], 0);      return 0;    case T('v'):      showVersion(argv[0]);      return 0;    case T('\0'):      if (j > 1) {        i++;        j = 0;        break;      }      /* fall through */    default:      usage(argv[0], 2);    }  }  if (i == argc) {    useStdin = 1;    processFlags &= ~XML_MAP_FILE;    i--;  }  for (; i < argc; i++) {    FILE *fp = 0;    XML_Char *outName = 0;    int result;    XML_Parser parser;    if (useNamespaces)      parser = XML_ParserCreateNS(encoding, NSSEP);    else      parser = XML_ParserCreate(encoding);    if (requireStandalone)      XML_SetNotStandaloneHandler(parser, notStandalone);    XML_SetParamEntityParsing(parser, paramEntityParsing);    if (outputType == 't') {      /* This is for doing timings; this gives a more realistic estimate of         the parsing time. */      outputDir = 0;      XML_SetElementHandler(parser, nopStartElement, nopEndElement);      XML_SetCharacterDataHandler(parser, nopCharacterData);      XML_SetProcessingInstructionHandler(parser, nopProcessingInstruction);    }    else if (outputDir) {      const XML_Char *file = useStdin ? T("STDIN") : argv[i];      if (tcsrchr(file, T('/')))        file = tcsrchr(file, T('/')) + 1;#ifdef WIN32      if (tcsrchr(file, T('\\')))        file = tcsrchr(file, T('\\')) + 1;#endif      outName = malloc((tcslen(outputDir) + tcslen(file) + 2)                       * sizeof(XML_Char));      tcscpy(outName, outputDir);      tcscat(outName, T("/"));      tcscat(outName, file);      fp = tfopen(outName, T("wb"));      if (!fp) {        tperror(outName);        exit(1);      }      setvbuf(fp, NULL, _IOFBF, 16384);#ifdef XML_UNICODE      puttc(0xFEFF, fp);#endif      XML_SetUserData(parser, fp);      switch (outputType) {      case 'm':        XML_UseParserAsHandlerArg(parser);        XML_SetElementHandler(parser, metaStartElement, metaEndElement);        XML_SetProcessingInstructionHandler(parser, metaProcessingInstruction);        XML_SetCommentHandler(parser, metaComment);        XML_SetCdataSectionHandler(parser, metaStartCdataSection,                                   metaEndCdataSection);        XML_SetCharacterDataHandler(parser, metaCharacterData);        XML_SetDoctypeDeclHandler(parser, metaStartDoctypeDecl,                                  metaEndDoctypeDecl);        XML_SetEntityDeclHandler(parser, metaEntityDecl);        XML_SetNotationDeclHandler(parser, metaNotationDecl);        XML_SetNamespaceDeclHandler(parser, metaStartNamespaceDecl,                                    metaEndNamespaceDecl);        metaStartDocument(parser);        break;      case 'c':        XML_UseParserAsHandlerArg(parser);        XML_SetDefaultHandler(parser, markup);        XML_SetElementHandler(parser, defaultStartElement, defaultEndElement);        XML_SetCharacterDataHandler(parser, defaultCharacterData);        XML_SetProcessingInstructionHandler(parser,                                            defaultProcessingInstruction);        break;      default:        if (useNamespaces)          XML_SetElementHandler(parser, startElementNS, endElementNS);        else          XML_SetElementHandler(parser, startElement, endElement);        XML_SetCharacterDataHandler(parser, characterData);#ifndef W3C14N        XML_SetProcessingInstructionHandler(parser, processingInstruction);#endif /* not W3C14N */        break;      }    }    if (windowsCodePages)      XML_SetUnknownEncodingHandler(parser, unknownEncoding, 0);    result = XML_ProcessFile(parser, useStdin ? NULL : argv[i], processFlags);    if (outputDir) {      if (outputType == 'm')        metaEndDocument(parser);      fclose(fp);      if (!result)        tremove(outName);      free(outName);    }    XML_ParserFree(parser);  }  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -