首页 > 解决方案 > tinyxml2 如何从包含 xml 文本和二进制数据的文件中加载 XMLDocument

问题描述

我需要创建一个特殊用途的文件格式,它应该有一个 XML“头”和这个头之后的一大块二进制数据。我想使用 tinyxml2 库来解析 xml。之后,我会将二进制数据拉入一个大字节数组中。xml 标头的大小不固定。xml 标头不会很大,二进制数据通常约为 10-20 MB。我会读入很多文件,所以效率很有价值。

tinyxml2 提供了两种读取文件的方法 LoadFile( const char* filename ) 和 LoadFile( FILE* ),但如果在最后一个元素之后附加非 xml 二进制数据,这些方法将不起作用。

有一个 CDATA 的概念,但我不确定这是否是最有效的方法,因为二进制数据将是 tinyxml2 解析工作的一部分。

您对格式化此文件(即特殊标签、标题大小信息等)和使用 tinyxml2 读取标题有何建议?谢谢!

标签: xmlbinary-datatinyxml2

解决方案


我意识到 tinyxml2 还提供了一个 XMLDocument.Parse() 函数来读取字符串。它还将接受要读取的字节数作为参数。所以我放置了一个特殊的标头标签作为我的文件格式的第一行,它指示二进制数据开始之前的字节数:

<!-- MY_FILE_FORMAT HeaderBytes="956" -->
<?xml version="1.0" encoding="UTF-8"?>
<Element> ... </Element>
binary-data-starts-here

这样我就可以只从以二进制模式打开的文件中提取 xml 部分,并在其上使用 Parse() 函数。我将标签创建为 xml-comment 格式,以便在我的编辑器中正确显示和突出显示。

仍然有兴趣听到是否有更“优雅”的方式。


推荐阅读