tinyxml解析后存放至结构体

struct ShelfInfo
{
	int port;
	int addslot[5];
};

ShelfInfo g_shelfinfo[5] = {0};

int example_3()
{
	static const char* xml =
		"<?xml version=\"1.0\"?>"
		"<!DOCTYPE PLAY SYSTEM \"play.dtd\">"
		"<PLAY>2"
			"<PORT>1"
				"<SLOT>3</SLOT>"
				"<SLOT>4</SLOT>"
				"<SLOT>5</SLOT>"
			"</PORT>"
			"<PORT>4"
				"<SLOT>6</SLOT>"
				"<SLOT>7</SLOT>"
				"<SLOT>8</SLOT>"
			"</PORT>"
		"</PLAY>";

	XMLDocument doc;
	doc.Parse( xml );

	XMLElement* playElement = doc.FirstChildElement( "PLAY" );
	const char* play = playElement->GetText();
	printf( "Value of play (1): %s\n", play );

	XMLText* textNode = playElement->FirstChild()->ToText();
	const char* portNode = textNode->Value();
	printf( "Value of play (2): %s\n", portNode );

	XMLElement* tempElement = doc.FirstChildElement( "PLAY")->FirstChildElement( "PORT" );
	XMLElement* tempiElement = doc.FirstChildElement( "PLAY")->FirstChildElement( "PORT" )->FirstChildElement( "SLOT" );

	for (int i = 0; i< atoi(play); i++)
	{	
		if(tempElement != NULL)
		{	
			const char* temp = tempElement->GetText();
			g_shelfinfo[i].port = atoi(temp);
			printf( "tempnode : %s\n", temp );

			tempiElement = tempElement->FirstChildElement( "SLOT" );

			for(int j = 0; j < 3; j++)
			{
				if(tempiElement != NULL)
				{	
					const char* tempi = tempiElement->GetText();
					printf(" %s ", tempi);
					g_shelfinfo[i].addslot[j] = atoi(tempi);
					tempiElement = tempiElement->NextSiblingElement();
				}
			}
			printf( "=======\n");

			tempElement = tempElement->NextSiblingElement();

			//printf("tempElement->getText = %s\n",tempiElement->GetText());
		}

	}


	return doc.ErrorID();
}


struct ShelfInfo g_C2[]=
{
	{1,{3,4,5}},
	{2,{7,8,9}},
};

int main()
{

	example_3();

	printf("mytest g_shelfinfo = %d\n",g_shelfinfo[1].addslot[1]);

	system("pause");
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值