当前位置: 首页>>代码示例>>C++>>正文


C++ XMLParser::parseXML方法代码示例

本文整理汇总了C++中XMLParser::parseXML方法的典型用法代码示例。如果您正苦于以下问题:C++ XMLParser::parseXML方法的具体用法?C++ XMLParser::parseXML怎么用?C++ XMLParser::parseXML使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在XMLParser的用法示例。


在下文中一共展示了XMLParser::parseXML方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: parseHeader

int NBUSPacket::parseHeader(void *data, unsigned int length)
{
	XMLParser *pXmlParser = XMLParser::getInstance();

	IXML *pIXml = pXmlParser->parseXML((char *)data, length);

	if (pIXml == NULL)
	{
		delete pXmlParser;
		LOGE("Header XML corruption");
		return -1;
	}

	this->mHeaderLength = length;
	this->mpXml = pIXml;

	if (pIXml->getXMLType() == XML_TYPE_EVENT)
	{
		EventXML *pEventXml = (EventXML *)pIXml;

		this->mpXml = pEventXml;

		this->mDataLength = pEventXml->getLength();

		this->mPacketLength = strlen(NBUS_PACKET_START_CODE) + NBUS_PACKET_HEADER_LEGNTH_BYTES + this->mHeaderLength + this->mDataLength;
		this->mpPacket = new char[this->mPacketLength];

		memcpy(this->mpPacket, NBUS_PACKET_START_CODE, strlen(NBUS_PACKET_START_CODE));

		this->mpHeader = (char *)this->mpPacket + strlen(NBUS_PACKET_START_CODE) + NBUS_PACKET_HEADER_LEGNTH_BYTES;

		memcpy(this->mpHeader, data, length);

		if (this->mDataLength)
		{
			this->mpData = (char *)this->mpHeader + this->mHeaderLength;
		}
	}
	else if (pIXml->getXMLType() == XML_TYPE_COMMAND)
	{
		CommandXML *pCmdXml = (CommandXML *)pIXml;

		this->mpXml = pCmdXml;

		this->mPacketLength = strlen(NBUS_PACKET_START_CODE) + NBUS_PACKET_HEADER_LEGNTH_BYTES + this->mHeaderLength;
		this->mpPacket = new char[this->mPacketLength];

		memcpy(this->mpPacket, NBUS_PACKET_START_CODE, strlen(NBUS_PACKET_START_CODE));

		this->mpHeader = (char *)this->mpPacket + strlen(NBUS_PACKET_START_CODE) + NBUS_PACKET_HEADER_LEGNTH_BYTES;

		memcpy(this->mpHeader, data, length);
	}

	delete pXmlParser;

	return 0;
}
开发者ID:SeonghoBaek,项目名称:wilson_android,代码行数:58,代码来源:Packet.cpp

示例2: if

int NodeAdapter::Dispatcher::dispatch(const char* event) // Don't neet to look at event.
{
    while (mpOwner->mQ.getSize())
    {
        NBUS_CMD* pItem = mpOwner->mQ.pop();
        bool	bDoNotCallback = FALSE;

        if (pItem == NULL) continue;

        if (pItem->mType == SETUP_MESSAGE)
        {
            mpOwner->mSetup = TRUE;

            delete pItem;

            return 0;
        }

        if (!pItem->valid())
        {
            delete pItem;

            return -1;
        }

        // Parse.
        if (pItem->mType == LOCAL_MESSAGE)
        {
            if (strncmp((char*)pItem->mpData, "<?xml", 5) == 0)
            {
                XMLParser* pXmlParser = XMLParser::getInstance();
                IXML *pIXml = pXmlParser->parseXML((char *)pItem->mpData, pItem->mLength);

                if (pIXml == NULL)
                {
                    LOGW("Not Valid XML Message");
                }
                else if (pIXml->getXMLType() == XML_TYPE_BUS)
                {
                    NBUSXML* pBusXml = (NBUSXML *)pIXml;

                    if (pBusXml->getSyncId() > 0 && pBusXml->getType() == NBUS_TYPE_RESPONSE)
                    {
                        char *pSharedAddr = pBusXml->getSharedBufferAddr();
                        char *pStrXml = pBusXml->toXML();

                        strcpy(pSharedAddr, pStrXml);

                        NodeLooper::exit(pBusXml->getSyncId());

                        delete [] pStrXml;

                        bDoNotCallback = TRUE;
                    }

                    delete pBusXml;
                }


                delete pXmlParser;
            }
            else
            {
                //LOGI("Custom Message");
            }
        }
        else if (pItem->mType == GLOBAL_MESSAGE)
        {
            //LOGI("Global Client Message Arrived");
        }

        if (bDoNotCallback == FALSE && mpOwner->mNodeAction)
        {
            mpOwner->mNodeAction(pItem->mpData, pItem->mLength, pItem->mType);
        }

        if (bDoNotCallback == FALSE && mpOwner->mpNodeImpl)
        {
            mpOwner->mpNodeImpl->nodeCallback(pItem->mpData, pItem->mLength, pItem->mType);
        }

        delete pItem;
    }
    return 0;
}
开发者ID:SeonghoBaek,项目名称:wilson_android,代码行数:85,代码来源:NodeAdapter.cpp

示例3: parserPacket

int NBUSPacket::parserPacket(void *packet, unsigned int length)
{
	int headerLength = strlen(NBUS_PACKET_START_CODE) + NBUS_PACKET_HEADER_LEGNTH_BYTES;
	int headerPosition = headerLength;

	//LOGI("Packet: %s", (char *)packet);

	if (length < headerLength)
	{
		LOGE("Invalid Packet: %d", length);
		return -1;
	}

	int startCodeBytes = strlen(NBUS_PACKET_START_CODE);
	char startCode[startCodeBytes];

	strncpy(startCode, (char *)packet, startCodeBytes);

	if (strncmp(startCode, (char *)NBUS_PACKET_START_CODE, startCodeBytes))
	{
		LOGE("Invalid Start Code");
		return -1;
	}

	int headerLengthBytes = *(int *)(startCodeBytes + (char *)packet);

	this->mHeaderLength = headerLengthBytes;

	headerLength += headerLengthBytes;

	if (length < headerLength)
	{
		LOGE("Incomplete Packet Header");
		return -1;
	}

	this->mpHeader = (char *)packet + headerPosition;

	// Parser XML header.
	char packetHeader[this->mHeaderLength + 1];
	memset(packetHeader, 0, this->mHeaderLength + 1);
	strncpy(packetHeader, this->mpHeader, this->mHeaderLength);

	//LOGI("Packet Header: %s", packetHeader);
	XMLParser *pXmlParser = XMLParser::getInstance();

	IXML *pIXml = pXmlParser->parseXML(packetHeader, this->mHeaderLength);

	if (pIXml == NULL)
	{
		LOGW("Invalid XML Header: %s", packetHeader);
		delete pXmlParser;

		return -1;
	}

	if (this->mpXml) delete this->mpXml;
	this->mpXml = pIXml;

	if (pIXml->getXMLType() == XML_TYPE_EVENT)
	{
		EventXML *pEventXml = (EventXML *)pIXml;

		this->mpXml = pEventXml;

		this->mDataLength = pEventXml->getLength();

		if (this->mpPacket) delete [] (char*)this->mpPacket;

		this->mpPacket = new char[headerLength + this->mDataLength+1];
		memset(this->mpPacket, 0, headerLength + this->mDataLength+1);
        this->mPacketLength = headerLength + this->mDataLength;

		memcpy(this->mpPacket, packet, headerLength + this->mDataLength);

		this->mpHeader = (char *)this->mpPacket + headerPosition;
		this->mpData = (char *)this->mpHeader + this->mHeaderLength;
	}
	else if (pIXml->getXMLType() == XML_TYPE_COMMAND)
	{
		CommandXML *pCmdXml = (CommandXML *)pIXml;

		this->mpXml = pCmdXml;

		if (this->mpPacket) delete [] (char*)this->mpPacket;

		this->mpPacket = new char[headerLength+1];
		memset(this->mpPacket, 0, headerLength+1);
        this->mPacketLength = headerLength;

        //LOGI("Packet Length: %d", headerLength);
		memcpy(this->mpPacket, packet, headerLength);

		this->mpHeader = (char *)this->mpPacket + headerPosition;
	}

	delete pXmlParser;

	return 0;
}
开发者ID:SeonghoBaek,项目名称:wilson_android,代码行数:100,代码来源:Packet.cpp

示例4: copyHeader

int NBUSPacket::copyHeader(void *header, unsigned int length)
{
	char *buff = NULL;
	unsigned int packetLength = 0;
	int wPos = 0;

    if (this->mpPacket)
    {
        delete [] (char *)this->mpPacket;
        this->mpPacket = NULL;
    }
    
    mPacketLength = 0;
    mHeaderLength = 0;
	mDataLength = 0;
	mDataCopied = 0;

	if (this->mpXml)
	{
		delete this->mpXml;
		this->mpXml = NULL;
	}

	//LOGI("Header: %s, Length: %d", (char *)header, length);
	packetLength = strlen(NBUS_PACKET_START_CODE) + NBUS_PACKET_HEADER_LEGNTH_BYTES + length;

	//LOGI("Length : %d", packetLength);

	buff = new char[length+1];

	memset(buff, 0, length+1);

	strncpy(buff, (char *)header, length);

	//LOGI("buff : %s", buff);

	this->mHeaderLength = length;

	// Parser XML header.
	XMLParser *pXmlParser = XMLParser::getInstance();

	IXML *pIXml = pXmlParser->parseXML(buff, this->mHeaderLength);

	if (pIXml == NULL)
	{
		LOGW("Invalid XML Header: %s", buff);
		delete pXmlParser;
		delete [] buff;

		return -1;
	}

	this->mpXml = pIXml;

	delete [] buff;

	if (pIXml->getXMLType() == XML_TYPE_EVENT)
	{
		EventXML *pEventXml = (EventXML *)pIXml;

		//LOGI("Parsed Header:%s", pEventXml->toXML());

		this->mDataLength = pEventXml->getLength();
		packetLength += this->mDataLength;

		//LOGI("Data Length: %d, Packet Length: %d", this->mDataLength, packetLength);
	}

	this->mpPacket = new char[packetLength];

	this->mPacketLength = packetLength;

	strncpy((char *)this->mpPacket, (char *)NBUS_PACKET_START_CODE, strlen(NBUS_PACKET_START_CODE));

	wPos = strlen(NBUS_PACKET_START_CODE);

	*(int *)(wPos + (char *)this->mpPacket) = this->mHeaderLength;

	//LOGI("Header Length: %d", *(int *)(wPos + (char *)this->mpPacket));

	wPos += sizeof(int);

	this->mpHeader = (char *)(wPos + (char *)this->mpPacket);

	strncpy(this->mpHeader, (char *)header, this->mHeaderLength);

	wPos += this->mHeaderLength;

	this->mpData = (char *)(wPos + (char *)this->mpPacket);

	delete pXmlParser;

	return 0;
}
开发者ID:SeonghoBaek,项目名称:wilson_android,代码行数:94,代码来源:Packet.cpp


注:本文中的XMLParser::parseXML方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。