XMl与Json学习笔记小结

来源:互联网 发布:长城证券交易软件下载 编辑:程序博客网 时间:2024/06/05 19:25

概述:

在我们的项目中用到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;//解析子元素CfgTokentinyxml2::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"结尾的文件


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






原创粉丝点击