当我尝试使用 RapidXML 框架解析一个简单的 .xml 文件时,它会抛出一个 parse_error,原因如下:“expected <”。现在这实际上是我第一次编写 XML 代码,所以这可能是一个愚蠢的语法错误,在这种情况下,请耐心等待 :) 这是我的xmlParser.h:
#ifndef __XML_PARSER_H__
#define __XML_PARSER_H__
#include "rapidxml.hpp"
#include "windowUtil.h"
class XmlParser
{
public:
bool parse(char *xml)
{
try
{
doc.parse<0>(xml);
}
catch(rapidxml::parse_error &e)
{
msg_box(NULL, e.what(), "RapidXML exception!", MB_OK | MB_ICONERROR | MB_TASKMODAL);
return false;
}
return true;
}
char* get_first_node_name()
{
return doc.first_node()->name();
}
private:
rapidxml::xml_document<> doc;
};
#endif
这就是它的调用和使用方式:
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow)
{
XmlParser xmlParser;
WindowFramework *window = create_window(&framework, NULL, NULL, "GAME");
if(!init_window(window, true, true))
return kill(1);
if(!xmlParser.parse("./layouts/login_gui.xml"))
return kill(1);
framework.main_loop();
return kill(0);
}
login_gui.xml:
<?xml version="1.0"?>
<button>
<text>EXIT</text>
<buttonready>button.png</buttonready>
<buttonrollover>button_active.png</buttonrollover>
<buttonpressed>button_pressed.png</buttonpressed>
<buttoninactive>button_inactive.png</buttoninactive>
</button>