1. 介绍TinyXML的一些类
TiXmlBase:整个TinyXML模型的基类
TiXmlAttribute:对应于XML中的元素的属性
TiXmlNode:对应于DOM结构中的节点
TiXmlComment:对应于XML中的注释
TiXmlDeclaration:对应于XML中的申明部分,<?versiong=”1.0” ?>
TiXmlDocument:对应于XML的整个文档
TiXmlElement:对应于XML的元素
TiXmlText:对应于XML的文字部分
TiXmlUnknown:对应于XML的未知部分
TiXmlHandler:定义了针对XML的一些操作
2. 下载
http://prdownloads.sourceforge.net/tinyxml
3. 头文件
#include "tinyxml.h"
#include "tinystr.h"
4. 生成xml
TiXmlDocument *pDoc = new TiXmlDocument; //生成XML
TiXmlDeclaration *pDeclaration = new TiXmlDeclaration("1.0","UTF-8",""); //序言区
pDoc->LinkEndChild(pDeclaration);
TiXmlElement *GPS = new TiXmlElement("GPS"); //父结点 ->省略了根结点
pDoc->LinkEndChild(GPS);
TiXmlElement *pCode = new TiXmlElement("Code");
GPS->LinkEndChild(pCode);
TiXmlElement *pSDate = new TiXmlElement("SDate");
GPS->LinkEndChild(pSDate);
TiXmlText *tCode = new TiXmlText("");
pCode->LinkEndChild(tCode);
TiXmlText *tSDate = new TiXmlText("");
pSDate->LinkEndChild(tSDate);
TiXmlPrinter printer;
pDoc->Accept(&printer);
//打印XML字符串
cout << printer.CStr() << endl;
//生成xml格式文件
pDoc->SaveFile("Respond.xml");
<?xml version="1.0" encoding="UTF-8" ?>
<GPS>
<Code>D1</Code>
<SDate>2013-08-2112:41:05</SDate>
</GPS>
5. 节点附加属性
parent->SetAttribute("time","12:10"); //属性可以添加多个,格式是(属性名,属性值字符串)
6. 解析xml
TiXmlDocument *pDoc = new TiXmlDocument();
pDoc->Clear(); //开始做清空操作,放置Parse解析一个不变的字符串
pDoc->Parse(" "); //解析字符串
pDoc->LoadFile("*.xml"); //解析xml文件
TiXmlElement *RootElement = pDoc->RootElement();
TiXmlElement *Code = RootElement->FirstChildElement();
printf("%s\n",Code->GetText());
TiXmlElement *SDate = Code->NextSiblingElement();
7. 获取节点值
pNameEle->Value(); //结点名
pNameEle->GetText(); //内容
pNameEle->Attribute("id"); //结点属性
8. 查询指定字段
TiXmlDocument pDoc;
pDoc.RootElement()->FirstChild()->Value(); //取得第一个子节点名
pDoc.RootElement()->FirstChild("IName")->NextSibling()->Value() //取得某一个节点的下一个节点名
pDoc.RootElement()->FirstChild("SDate")->ToElement()->GetText(); //取得子节点值
9. CDATA区段
XML文件中的CDATA区段以
<![CDATA[
开始,以
]]>
结束
CDATA区段中的文本不会被XML解析器解析,无论它们带有什么内容
你可以用CDATA区段来存储含有不想被解析的文本(例如程序代码段)
string strCDATA = RootElement()->FirstChild()->Value(); //获取CDATA区段的数据
const char *str = "<GPS><body><![CDATA[fuck]]></body></GPS>" ;