XML学习
来源:互联网 发布:网站数据安全如何保证 编辑:程序博客网 时间:2024/06/06 00:23
今天突然需要用到文本协议,以前搞嵌入式的东西,都是用的二进制协议,没有用到文本协议,今天开始学习了一上午,感觉文本协议确实在制定上要方便了很多。但是效率上肯定不如二进制协议,但是二进制协议对于维护者来说还是比较困难的。
首先说说XML吧,下面说说我的简单理解,(具体的参考教程http://www.runoob.com/xml/xml-tutorial.html )
XML是可扩展标记语言,是(eXtensible Markup Language)的缩写。XML用来传输数据和存储数据。
也就是说XML的基本概念,我们学什么东西都要从其概念入手:
using namespace std;
#include <iostream>
#include "tinyxml.h"
#include "tinystr.h"
#include <string>
#include <windows.h>
#include <atlstr.h>
using namespace std;
string GetAppPath()
{//获取应用程序目录
char moduleFileName[MAX_PATH];
GetModuleFileNameA(NULL, moduleFileName, MAX_PATH);
std::string workingFolder(moduleFileName);
size_t pos = workingFolder.find_last_of("\\");
workingFolder = workingFolder.substr(0, pos);
std::cout << workingFolder << std::endl;
return workingFolder;
}
bool CreateXmlFile(string& szFileName)
{//创建xml文件,szFilePath为文件保存的路径,若创建成功返回true,否则false
try
{
//创建一个XML的文档对象。
TiXmlDocument *myDocument = new TiXmlDocument();
//创建一个根元素并连接。
TiXmlElement *RootElement = new TiXmlElement("Persons");
myDocument->LinkEndChild(RootElement);//根元素连接到myDocument下。
//创建一个Person元素并连接。
TiXmlElement *PersonElement = new TiXmlElement("Person");
RootElement->LinkEndChild(PersonElement);//原来是连接这里有文章啊,哈哈
//设置Person元素的属性。
PersonElement->SetAttribute("ID", "1");
//创建name元素、age元素并连接。
TiXmlElement *NameElement = new TiXmlElement("name");
TiXmlElement *AgeElement = new TiXmlElement("age");
PersonElement->LinkEndChild(NameElement);
PersonElement->LinkEndChild(AgeElement);
//设置name元素和age元素的内容并连接。
TiXmlText *NameContent = new TiXmlText("麦蒂");
TiXmlText *AgeContent = new TiXmlText("32");
NameElement->LinkEndChild(NameContent);
AgeElement->LinkEndChild(AgeContent);
TiXmlElement *PersonElement1 = new TiXmlElement("Person");
RootElement->LinkEndChild(PersonElement1);//原来是连接这里有文章啊,哈哈
//设置Person元素的属性。
PersonElement1->SetAttribute("ID", "2");
//创建name元素、age元素并连接。
TiXmlElement *NameElement1 = new TiXmlElement("name");
TiXmlElement *AgeElement1 = new TiXmlElement("age");
PersonElement1->LinkEndChild(NameElement1);
PersonElement1->LinkEndChild(AgeElement1);
//设置name元素和age元素的内容并连接。
TiXmlText *NameContent1 = new TiXmlText("易建联");
TiXmlText *AgeContent1 = new TiXmlText("28");
NameElement1->LinkEndChild(NameContent1);
AgeElement1->LinkEndChild(AgeContent1);
TiXmlElement *PersonElement3 = new TiXmlElement("Person");
RootElement->LinkEndChild(PersonElement3);//原来是连接这里有文章啊,哈哈
//设置Person元素的属性。
PersonElement3->SetAttribute("ID", "3");
//创建name元素、age元素并连接。
TiXmlElement *NameElement3 = new TiXmlElement("name");
TiXmlElement *AgeElement3 = new TiXmlElement("age");
PersonElement3->LinkEndChild(NameElement3);
PersonElement3->LinkEndChild(AgeElement3);
//设置name元素和age元素的内容并连接。
TiXmlText *NameContent3 = new TiXmlText("姚明");
TiXmlText *AgeContent3 = new TiXmlText("32");
NameElement3->LinkEndChild(NameContent3);
AgeElement3->LinkEndChild(AgeContent3);
string appPath = GetAppPath();
string seperator = "\\";
string fullPath = appPath + seperator + szFileName;
myDocument->SaveFile(fullPath.c_str());//保存到文件
}
catch (string& e)
{
return false;
}
return true;
}
bool ReadXmlFile(string& szFileName)
{//读取Xml文件,并遍历
try
{
string appPath = GetAppPath();
string seperator = "\\";
string fullPath = appPath + seperator + szFileName;
//创建一个XML的文档对象。
TiXmlDocument *myDocument = new TiXmlDocument(fullPath.c_str());
if (NULL == myDocument)
{
return false;
}
myDocument->LoadFile();
//获得根元素,即Persons。
TiXmlElement *RootElement = myDocument->RootElement();
if (NULL == RootElement)
{
return false;
}
//输出根元素名称,即输出Persons。
cout << RootElement->Value() << endl;
//获得第一个Person节点。
TiXmlElement *FirstPerson = RootElement->FirstChildElement();
//获得第一个Person的name节点和age节点和ID属性。
TiXmlElement *NameElement = FirstPerson->FirstChildElement();
TiXmlElement *AgeElement = NameElement->NextSiblingElement();
TiXmlAttribute *IDAttribute = FirstPerson->FirstAttribute();
//输出第一个Person的name内容,即周星星;age内容,即 22;ID属性,即ID="1"
cout << NameElement->FirstChild()->Value() << endl;
cout << AgeElement->FirstChild->Value() << endl;
cout << IDAttribute->Value() << endl;
}
catch (string& e)
{
return false;
}
return true;
}
int main()
{
string fileName = "info.xml";
CreateXmlFile(fileName);
ReadXmlFile(fileName);
}
- XML学习
- XML学习
- XML学习
- XML学习
- XML学习
- XML学习
- xml学习
- 学习xml
- xml 学习
- XML学习
- XML 学习
- 学习XML
- XML学习
- xml学习
- xml学习
- XML学习
- XML学习
- XML学习
- 品味慢生活,少一点急躁、多一点从容
- 自定义view之继承控件
- E -- XJT Love Digits-----水题
- SSH学习(三)Struts2之Action下
- 17 - 04 - 08 Web安全(04)
- XML学习
- 学习笔记:Zookeeper 应用案例(上下线动态感知)
- /usr/bin/ld: cannot find -llapack
- 来自北邮人的大牛校招准备经验分享:17届大牛学长分享:如何集齐BAT三家offer
- hi3559笔记
- jsp中表单提交方法和获取对应值,jsp登录页面
- Struts1 Logic标签
- Jquery表单异步提交
- 上海市大数据技术与应用创新中心成立