XMl与Json学习笔记小结

概述:

在我们的项目中用到XMl和Json格式的数据或者文件作为数据保存的格式,于是学习了XMl和Json的语法,做个小笔记总结下。

XML基本知识点

一个简单的xml实例

<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

1 XML文档必须要有根元素  如下所示:

<root>
<book>
......
</book>
</root>

2 XMl声明文件的可选部分如果存在需要放在文档的第一行.如:
<?xml version="1.0" encoding="UTF-8"?>

3 所有的XML元素必须有一个关闭的标签

4 XMl对大小写敏感,必须使用相同的大小写来编写打开标签和关闭标签
如 <Title>Hello<title>错误   <Title>Hello<Title>才正确

5 XML的属性必须由引号(单引号或者双引号) 如
<file type="gif">hello.gif</file>

6 当我们使用特殊字符的时候需要使用转义字符,在XML中五个预定义的尸体引用

&it;        <            less than
&gt; >            great than  
&amp; &  ampresand
&apos; '      apostrophe
&quot; "  quoutation mark

7 XMl中的注释 <!-- this is a comment -->

8 一个元素可以包含 属性 元素  文本  或者混合这三种。 如:

<note date="2017-10-09">
  <to>Tove</to>
  <from>Jani</from>
</note>

其中date是属性 "to" "from"是元素,"Tove", "Jani"是文本

实例:

一个用tinyxml2::XMLElement解析xml数据的C++实例,代码不全,仅仅参考

void parse_element(tinyxml2::XMLElement *xml_element_data, cmd_data_t *p_data);

/** 
* @brief  解析入口函数
* @param data [in&out] 解析后的数据 
* @param p_element [in] 根元素 
*/  
int parse_xml_data(cmd_t* data, tinyxml2::XMLElement* p_element)
{
	assert(p_element != NULL);
	
	cmd_data_t* p_data = new cmd_data_t;
	tinyxml2::XMLElement* xml_element_data = p_element->firstChildElement();
	while(NULL != xml_element_data)
	{
		//遍历提取每个OSD基本信息
		parse_element(xml_element_data, p_data);
		xml_element_data = xml_element_data->NextSiblingElement();
	}
	
	data->cmd_data = p_data;
	
	return 0;
}

/** 
* @brief  解析具体元素中的数据 
* @note   当前元素中就一个属性和一个元素
* @param xml_element_data [in] 需要解析的元素
* @param p_data [in&out] 解析的数据 
*/ 
void parse_element(tinyxml2::XMLElement *xml_element_data, cmd_data_t *p_data)
{
	char* pConfigToken = NULL;
	char* pSourceToken = NULL;
	
	//匹配元素名称
	if (strcmp(xml_element_data->Name(), "Data") != 0)
		return;

	//获取token属性		
	pSourceToken = xml_element_data->Attribute("token", NULL);
	if (NULL == pSourceToken)
		return;
		
	//解析子元素CfgToken
	tinyxml2::XMLElement *pCfgToken = xml_osd->FirstChildElement("CfgToken");
	if (NULL == pCfgToken)
		return;
	
	pConfigToken = pCfgToken->GetText();
	if (NULL == pConfigToken)
		return;	
	
	strncpy(p_data->configToken[p_data->idx], pConfigToken, MAX_SIZE);	
	strncpy(p_data->sourceToken[p_data->idx], pSourceToken, MAX_SIZE);
	p_data->idx++;
}

贴这段代码主要是了解几个函数:
1 firstChildElement() -->获取当前元素的第一个子元素
2 NextSiblingElement() -->获取下一个元素
3 Attribute() -->获取当前元素的一个属性
4 GetText() -->获取元素的文本

JSON基本知识点

JSON:Java Script Object Notation(javaScript对象表示法)


1 SON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台,json使用键值对的方式存储数据
2 json值可以为以下几种之一
数字 整数或者浮点数   如 {"age":18}
字符串 在双引号中 如 {"name":"xiaoming"}
逻辑值 true或false 如 {"flag":true}
数组 在中括号中 如 {"student":[{"name": "xiaoming"}, {"name": "xiaohong"}]}
对象 在大括号中 如 {"name":"xiaoming", "age":18}
null    如 {"student": null}

3 json文件类型是以".json"结尾的文件


暂时只写这么多,以后再补充。。。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值