📄 xmlparser.h
字号:
/******************************************************************************
功能:XML剖析类,负责剖析XML文件,并获得指定节点名,属性与值。
作者:微妙的平衡
时间:2006年10月16日
使用方法:
XmlParser xmlreader("debug\\TestXML.xml");
///节点路径使用从根节点开始到指定节点的全节点路径描述字符串
LPCTSTR xPath = _T("/GameFrame/Button");
int size = xmlreader.GetPathCount(xPath);
cout<<size<<'\n';
for (int i=0;i<size;i++)
{
LPCTSTR lpName = xmlreader.GetAttribAsStr(_T("Name"),xPath,i);
LPCTSTR lpImage = xmlreader.GetAttribAsStr(_T("Image"),xPath,i);
LPCTSTR lpXPos = xmlreader.GetAttribAsStr(_T("XPos"),xPath,i);
LPCTSTR lpYPos = xmlreader.GetAttribAsStr(_T("YPos"),xPath,i);
LPCTSTR lpWidth = xmlreader.GetAttribAsStr(_T("Width"),xPath,i);
LPCTSTR lpHeight = xmlreader.GetAttribAsStr(_T("Height"),xPath,i);
cout<<lpName<<","<<lpImage<<","<<lpXPos<<","<<lpYPos<<","<<lpWidth<<","<<lpHeight<<"\n";
}
TestXML.xml 文件内容:
<GameFrame Name="游戏框架">
<Button Name="确认按钮" Image="btn_enter.png" XPos="0" YPos="1" Width="100" Height="25" />
<Button Name="取消按钮" Image="btn_cancel.png" XPos="100" YPos="1" Width="100" Height="25" />
<Button Name="设置按钮" Image="btn_setup.png" XPos="200" YPos="1" Width="100" Height="25" />
</GameFrame>
注意:为了支持中文,必须将xml文件保存为ansi格式,否则将不能正常显示中文。
******************************************************************************/
#pragma once
#include "BaseObject.h"
namespace pug
{
class xml_parser;
class xml_node;
}
class XmlParser :
public BaseObject
{
static const int BUFFERSIZE = 8192;
public:
XmlParser();
~XmlParser();
///从文件加载XML
XmlParser(LPCTSTR filename);
public:
///从文件加载XML
bool LoadFromFile(LPCTSTR filename);
///从内存加载XML
bool LoadFromMemory(LPCTSTR xml);
///根据指定的节点路径获得该节点的值
LPCTSTR GetValueAsStr(LPCTSTR xPath, int index = -1);
int GetValueAsInt(LPCTSTR xPath, int index = -1);
unsigned int GetValueAsUInt(LPCTSTR xPath, int index = -1);
///根据指定的节点路径获得该节点的属性
LPCTSTR GetAttribAsStr(LPCTSTR xAttr, LPCTSTR xPath, int index = -1);
int GetAttribAsInt(LPCTSTR xAttr, LPCTSTR xPath, int index = -1);
unsigned int GetAttribAsUInt(LPCTSTR xAttr, LPCTSTR xPath, int index = -1);
///设置当前节点路径
bool SetCurrentPath(LPCTSTR xPath, int index = -1);
///获得指定相同节点路径的数量
int GetPathCount(LPCTSTR xPath);
private:
pug::xml_parser* m_pxml;
pug::xml_node* m_pcurrentNode;
TCHAR buffer[BUFFERSIZE];
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -