1

我正在使用 tinyxml2,系统将我的 xmls 保存为缩进的 4 个空格而不是制表符。读取此内容的程序仅读取选项卡并给我错误。无论如何我可以将 tinyxml2 更改为使用制表符而不是 4 个空格吗?我努力了

    XMLDocument xmlDoc(true, PRESERVE_WHITESPACE);

但它并没有改变任何东西

4

1 回答 1

1

我假设您通过调用 XMLDocument::SaveFile(const char* filename, bool compact=false) (或XMLDocument::SaveFile(FILE* fp, bool compact=false))来保存 xml 文档。

这些方法使用XMLPrinter为元素的缩进写入 4 个空格的类(方法XMLPrinter::PrintSpace)。您可以通过将参数传递true给来抑制缩进和换行符的写入。将 xml 直接从一个应用程序传递到另一个应用程序时,首选紧凑型。也许你的程序会接受这种形式的 xml。compactSaveFile

更改缩进字符将要求您重载XMLPrinter以提供您自己的实现PrintSpace并重载XMLDocument以使用您的 XMLPrinter。

请注意,XML 文档中元素之间的空格(换行符和缩进)没有意义,并且会(必须)被符合标准的解析器忽略。它仅用于人类可读性。

PRESERVE_WHITESPACE/COLLAPSE_WHITESPACE仅影响在元素的文本节点中处理空白字符的方式。

于 2016-12-21T00:36:58.920 回答