我正在使用 tinyxml2 在 C++ 中开发一个项目。我的 xml 解析有问题,我收到 errorID 10 并且加载文件时错误消息是“XML_ERROR_PARSING_TEXT”。
这是有问题的以下 xml:
<Game>
<Window>
<width>600</width>
<height>500</height>
<background>joliBackgroundDeGael.jpg</background>
</Window>
<Square>
<Mario>
<size>
<width>30</width>
<height>15</height>
</size>
<speedPerFrame>5</speedPerFrame>
<font>
<stop>stopMario.jpg</stop>
<run>runMario.jpg</run>
<jump>jumpMario.jpg</jump>
</font>
</Mario>
</Square>
</Game>
xml 文件在 W3C 验证器中有效。所以我认为问题不在这里,但也许在这里:
void parseXML::getDoc()
{
this->doc.LoadFile(this->path);
if (this->doc.ErrorID() != 0)
{
printf("load file=[%s] failed\n", this->doc.GetErrorStr1());
printf("load file=[%s] failed\n", this->doc.GetErrorStr2());
}
}
当我查看带断点的 LoadFile 函数时,我看到加载文件与下面的相同。
这里是完整的代码:
#include "caracteristique.h"
#include <iostream>
#include <direct.h>
#define GetCurrentDir _getcwd
using namespace tinyxml2;
const char* parseXML::path = "XMLType.xml";
void parseXML::getDoc()
{
this->doc.LoadFile(this->path);
if (this->doc.ErrorID() != 0)
{
printf("load file=[%s] failed\n", this->doc.GetErrorStr1());
printf("load file=[%s] failed\n", this->doc.GetErrorStr2());
}
}
int parseXML::getWindowHeight()
{
if (this->doc.Error())
this->getDoc();
XMLElement *root = this->doc.RootElement();
if (!root)
{
XMLElement *window = root->FirstChildElement("Window");
if (!window)
std::cout << window->FirstChildElement("height")->FirstChild()->ToText() << std::endl;
}
return 0;
}
一个主意 ?
谢谢你的帮助,