C++使用TinyXml实现读取XMl文件
#include "ParseXML.h"
ParseXML::ParseXML()
{
}
ParseXML::~ParseXML()
{
}
bool ParseXML::ReadParaXml(string m_strXmlPath, vector
{
Cookbook* pNode = new Cookbook();
//读取xml文件中的参数值
TiXmlDocument* Document = new TiXmlDocument();
if (!Document->LoadFile(m_strXmlPath.c_str()))
{
cout << "无法加载xml文件!" << endl;
cin.get();
return false;
}
TiXmlElement* RootElement = Document->RootElement(); //根目录
TiXmlElement* NextElement = RootElement; //根目录下的第一个节点层
while (NextElement != NULL) //判断有没有读完
{
if (NextElement->ValueTStr() == "menu") //读到menu节点
{
TiXmlElement* BoxElement = NextElement->FirstChildElement();
while (BoxElement->ValueTStr() != "name") //读到name节点
{
BoxElement = BoxElement->NextSiblingElement();
}
pNode->name = BoxElement->GetText();
BoxElement = BoxElement->NextSiblingElement();
while (BoxElement->ValueTStr() == "food") // 读到food节点
{
pNode->food.push_back(BoxElement->GetText());
BoxElement = BoxElement->NextSiblingElement();
}
while (BoxElement->ValueTStr() == "spices") // 读到spices节点
{
pNode->spices.push_back(BoxElement->GetText());
BoxElement = BoxElement->NextSiblingElement();
}
while (BoxElement != nullptr && BoxElement->ValueTStr() == "step")// 读到step节点
{
pNode->step.push_back(BoxElement->GetText());
BoxElement = BoxElement->NextSiblingElement();
}
vecNode.push_back(*pNode);
pNode->clear();
}
NextElement = NextElement->NextSiblingElement();
}
//释放内存
delete pNode;
delete Document;
cout << "完成xml的读取" << endl;
return true;
}
- .NET Core系列之MemoryCache 初识
- 007手机一键Root(安机网一键Root) v3.0 官方最新版 一键ROOT您的Android手机
- 12306密码被盗了怎么办?12306密码外泄解决方法
- 12个字的qq网名
- 150M迷你型无线路由器怎么设置?
- 192.168.1.1打不开怎么办?路由器192.168.1.1打不开的原因以及解决办法
- 2011年电子报合订本 电子报 编辑部 中文 PDF版 [84M]
- 2015年1月15日小米新旗舰发布会现场图文直播
- 2016.3.1vivo Xplay5新品发布会现场视频直播 优酷直播
- 2016华为P9发布会视频直播地址 4月15日华为P9国行发布会直播