virtual void write() { StringBuffer rowTag; OwnedRoxieString xmlpath(helper->getXmlIteratorPath()); if (!xmlpath) { rowTag.append(DEFAULTXMLROWTAG); } else { const char *path = xmlpath; if (*path == '/') path++; if (strchr(path, '/')) UNIMPLEMENTED; rowTag.append(path); } StringBuffer out; if (!dlfn.isExternal() || firstNode()) // if external, 1 header,footer { OwnedRoxieString suppliedHeader(helper->getHeader()); if (kind==TAKjsonwrite) buildJsonHeader(out, suppliedHeader, rowTag); else if (suppliedHeader) out.set(suppliedHeader); else out.set(DEFAULTXMLHEADER).newline(); outraw->write(out.length(), out.str()); if (calcFileCrc) fileCRC.tally(out.length(), out.str()); } Owned<IXmlWriterExt> writer = createIXmlWriterExt(helper->getXmlFlags(), 0, NULL, (kind==TAKjsonwrite) ? WTJSON : WTStandard); writer->outputBeginArray(rowTag); //need this to format rows, even if not outputting it below while(!abortSoon) { OwnedConstThorRow row = input->ungroupedNextRow(); if (!row) break; writer->clear().outputBeginNested(rowTag, false); helper->toXML((const byte *)row.get(), *writer); writer->outputEndNested(rowTag); outraw->write(writer->length(), writer->str()); if (calcFileCrc) fileCRC.tally(writer->length(), writer->str()); processed++; } if (!dlfn.isExternal() || lastNode()) // if external, 1 header,footer { OwnedRoxieString suppliedFooter(helper->getFooter()); if (kind==TAKjsonwrite) buildJsonFooter(out.clear().newline(), suppliedFooter, rowTag); else if (suppliedFooter) out.set(suppliedFooter); else out.set(DEFAULTXMLFOOTER).newline(); outraw->write(out.length(), out.str()); if (calcFileCrc) fileCRC.tally(out.length(), out.str()); } }
virtual void write() { StringBuffer rowTag; OwnedRoxieString xmlpath(helper->getXmlIteratorPath()); if (!xmlpath) { rowTag.append("Row"); } else { const char *path = xmlpath; if (*path == '/') path++; if (strchr(path, '/')) UNIMPLEMENTED; rowTag.append(path); } StringBuffer xmlOutput; CommonXmlWriter xmlWriter(helper->getXmlFlags()); if (!dlfn.isExternal() || firstNode()) // if external, 1 header,footer { OwnedRoxieString header(helper->getHeader()); if (header) xmlOutput.clear().append(header); else xmlOutput.clear().append("<Dataset>").newline(); outraw->write(xmlOutput.length(), xmlOutput.toCharArray()); if (calcFileCrc) fileCRC.tally(xmlOutput.length(), xmlOutput.toCharArray()); } while(!abortSoon) { OwnedConstThorRow row = input->ungroupedNextRow(); if (!row) break; xmlWriter.clear().outputBeginNested(rowTag, false); helper->toXML((const byte *)row.get(), xmlWriter); xmlWriter.outputEndNested(rowTag); outraw->write(xmlWriter.length(), xmlWriter.str()); if (calcFileCrc) fileCRC.tally(xmlWriter.length(), xmlWriter.str()); processed++; } if (!dlfn.isExternal() || lastNode()) // if external, 1 header,footer { OwnedRoxieString footer(helper->getFooter()); if (footer) xmlOutput.clear().append(footer); else xmlOutput.clear().append("</Dataset>").newline(); outraw->write(xmlOutput.length(), xmlOutput.toCharArray()); if (calcFileCrc) fileCRC.tally(xmlOutput.length(), xmlOutput.toCharArray()); } }
static void xmlnode(fz_node *node, int level) { if (!node) { indent(level); printf("<nil />\n"); return; } switch (node->kind) { case FZ_NOVER: xmlover((fz_overnode*)node, level); break; case FZ_NMASK: xmlmask((fz_masknode*)node, level); break; case FZ_NBLEND: xmlblend((fz_blendnode*)node, level); break; case FZ_NTRANSFORM: xmltransform((fz_transformnode*)node, level); break; case FZ_NCOLOR: xmlsolid((fz_solidnode*)node, level); break; case FZ_NPATH: xmlpath((fz_pathnode*)node, level); break; case FZ_NTEXT: xmltext((fz_textnode*)node, level); break; case FZ_NIMAGE: xmlimage((fz_imagenode*)node, level); break; case FZ_NSHADE: xmlshade((fz_shadenode*)node, level); break; case FZ_NLINK: xmllink((fz_linknode*)node, level); break; } }
int _tmain(int argc, _TCHAR* argv[]) { GetModuleFileName(NULL,szAppDir,MAX_PATH); //获取当前目录 char *p = strrchr(szAppDir, '\\'); if (p) *(p + 1) = '\0'; Init(); CString xmlpath(szAppDir); xmlpath.Append("AppOption.xml"); dwThreadID = ::GetCurrentThreadId(); #ifdef _DEBUG //ReadXml(xmlpath); //ServiceMain(); #endif SERVICE_TABLE_ENTRY st[] = { { szServiceName, (LPSERVICE_MAIN_FUNCTION)ServiceMain }, { NULL, NULL } }; if (strcmp(argv[argc-1], "/install") == 0) { if(!ReadXml(xmlpath)) { LogEvent(_T("can not set Depend!")); } Install(); } else if (strcmp(argv[argc-1], "/uninstall") == 0) { Uninstall(); } else if (strcmp(argv[argc-1], "/run") == 0) { if(ReadXml(xmlpath)) { StartMainTask(true); } } else { if(ReadXml(xmlpath)) { if (!::StartServiceCtrlDispatcher(st)) { LogEvent(_T("Register Service Main Function Error!")); } } else { LogEvent(_T("Miss AppOption.xml Error!")); } } return 0; }