使用 TinyXML 解析 XML 文件字符串



我有一个库,其中包含一个默认的XML文件,该文件表示为一个const char *逐个字节存储。

我希望用户能够请求此文件的句柄(作为 TiXmlDocument)。

目前,我正在尝试将此字符串defaultFile(在其自己的头文件中定义)传递给TiXmlDocument.Parse()来执行此操作。 Parse()正在向我传回一个垃圾指针(但不是空),这会导致尝试调用SaveFile()时崩溃。

我可以通过使用以下方法将相同的defaultFile写入文件来解决此问题:

FILE *file;
file = fopen("temp.prme", "w");
fprintf(file, "%s", defaultParameterFile);
fclose(file);

我使用将文件路径作为输入的构造函数创建一个新TiXmlDocument。 这有效,但这不是一个真正的选择,因为我不想将文件保存到用户机器。

据我所知,构造函数所做的只是从文件中读取字符串,然后将其直接发送到Parse()。 我检查了内存中传递的值,发现几乎没有差异。

使用构造函数方法时,必须在之后进行LoadFile()。 在LoadFile()中,传递给Parse()的字符串不是以空结尾的。 即使defaultFile是。 此外,所有新线路(defaultFile被列为/r/n,都列为nn

我尝试修改defaultFile以匹配我从构造函数中看到的内容,但没有运气。 有什么建议吗?

对于它的价值,defaultFile大致是这样布置的:

const char defaultFile[] = {
/* 0x00000000 */   0x3C, 0x3F, 0x78, 0x6D,
...
};

它大约有 9000 行长,每行 16 个字节。

当直接调用Parse()时,我在堆栈上分配TiXmlDocument。 数据被其他函数调用损坏。 我解决了这个问题,一切正常。

相关内容

  • 没有找到相关文章

最新更新