⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlparser.h

📁 HGE 2D游戏引擎制作的一个演示
💻 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 + -