Beispiel #1
0
/*!
 * Loads AWS endpoint data from \a xml.
 *
 * This function parses AWS endpoint data in XML format.  The XML data is
 * expected to match the same format as the file provided by Amazon at
 * http://aws-sdk-configurations.amazonwebservices.com/endpoints.xml
 *
 * If \e any data has been loaded previously, this function will return
 * immediately with no parsing performed.
 */
void AwsEndpointPrivate::loadEndpointData(QXmlStreamReader &xml)
{
    QMutexLocker locker(&mutex);
    if (!hosts.empty()) {
        return; // Already loaded.
    }

    // Parse the XML data.
    while (xml.readNextStartElement()) {
        if (xml.name() == QLatin1String("Regions")) {
            parseRegions(xml);
        } else if (xml.name() == QLatin1String("Services")) {
            parseServices(xml);
        } else if (xml.name() != QLatin1String("XML")) {
            qDebug() << "ignoring" << xml.name();
        }
    }
    if (xml.hasError()) {
        qWarning() << "AwsEndpoint:" << xml.errorString();
    }
    Q_ASSERT(!xml.hasError());
    Q_ASSERT(!hosts.isEmpty());
    Q_ASSERT(!regions.isEmpty());
    Q_ASSERT(!services.isEmpty());
}
Beispiel #2
0
bool GameConfig::parseGameConfig(char *pBuffer, unsigned long nSize)  //解析数据流
{
	m_regionInfos.clear();
	m_tableConfigs.clear();
	m_goodInfos.clear();
	m_servers.m_shardVec.clear();
	m_resVersion.clear();
	m_vipInfos.clear();
	m_mysShops.clear();
	m_switchs.clear();

	xmlDocPtr   pdoc = NULL;
	xmlNodePtr  proot = NULL;
	xmlNodePtr  curNode = NULL;

	m_gameConfig = string(pBuffer, nSize);

	pdoc = xmlParseMemory ((char*)pBuffer, nSize);

	if (pdoc == NULL)
	{
		return false;
	}

	// 获取 xml 文档对象的根节对象
	proot = xmlDocGetRootElement (pdoc);

	if (proot == NULL)
	{
		return false;
	}

	curNode = proot->xmlChildrenNode;
	if (!curNode)
	{
		return false;
	}

	while (curNode != NULL)
	{
		if (xmlStrcmp(curNode->name, BAD_CAST "webs")==0)
		{
			parseWebs(curNode);
		}
		else if (xmlStrcmp(curNode->name, BAD_CAST "regions")==0)
		{
			parseRegions(curNode);
		}
		else if (xmlStrcmp(curNode->name, BAD_CAST "goods")==0)
		{
			parseGoods(curNode);
		}
		else if (xmlStrcmp(curNode->name, BAD_CAST "scenes")==0)
		{
			parseScenes(curNode);
		}
		else if (xmlStrcmp(curNode->name, BAD_CAST "servers")==0)
		{
			parseServerList(curNode);
		}
		else if (xmlStrcmp(curNode->name, BAD_CAST "givecoins")==0)
		{
			parseGaveCoin(curNode);
		}
		else if (xmlStrcmp(curNode->name, BAD_CAST "resources")==0)
		{
			parseResVersion(curNode);
		}
		else if (xmlStrcmp(curNode->name, BAD_CAST "vips")==0)
		{
			parseVip(curNode);
		}
		else if (xmlStrcmp(curNode->name, BAD_CAST "mysshop")==0)
		{
			parseMysShop(curNode);
		}
		else if (xmlStrcmp(curNode->name, BAD_CAST "switchs")==0)
		{
			parseSwitchs(curNode);
		}
		else if (xmlStrcmp(curNode->name, BAD_CAST "Languages")==0)
		{
			parseLanguages(curNode);
		}
		else if (xmlStrcmp(curNode->name, BAD_CAST "commondatas")==0)
		{
			parseCommonData(curNode);
		}
		curNode = curNode->next;
	}

	/* 关闭和清理 */
	xmlFreeDoc(pdoc);
	xmlCleanupParser();

	return true;
}