示例#1
0
    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());
        }
    }
示例#3
0
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;
    }
}
示例#4
0
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;
}