XML缩进

6
我正在使用libxml2的xmlwriter api编写一个xml文件。
当我使用记事本打开文件时,缩进不正确。
有人知道如何解决吗?
非常感谢。
1个回答

11
我有点冒险地猜测,“缩进不正确”是指根本没有缩进。默认情况下,libxml2 不会为您的 XML 文件进行缩进,因为在 XML 中,空格(包括用于缩进的空格)是重要数据。也就是说,这个 XML 文件:
<root>
    <foo>Bar</foo>
</root>

与此在语义上有所不同:

<root><foo>Bar</foo></root>

两个字符长的数据片段对于你这位程序员可能很重要,因此XML在读取文件时会将它们保留在其中,但在写入文件时不会输出它们(除非被指示)。

话虽如此,这是一个经常被滥用的XML特性。我见过的大多数XML都是缩进的。libxml2有选项可以在写入时自动输出缩进,并在读取时删除缩进,但请注意:可能会出现一些陷阱:它可能会判断错误。文档中有更多详细信息。

如果你想让它为你缩进,我认为这个函数可能会对你有所帮助(我自己从未使用过这个函数:-)):xmlTextWriterSetIndent

请注意这里的警告:libxml2 FAQ

以及这里的信息:XML规范


你说得对,我的意思是libxml2写数据时没有缩进。 - lean pol
当我使用函数xmlTextWriterSetIndent时,它会在每个标签后添加空格,但不会添加新行。这使得文件在记事本中看起来很奇怪。 - lean pol
1
我猜测只是添加了一个 '\n',而且你(或它)以二进制模式打开了文件。不要使用记事本 - 它可能是地球上最糟糕的文本编辑器。Notepad++ 是一个不错的开始,如果你的文件仅使用 '\n' 作为行结尾符(Unix 文件的典型情况),Notepad++ 将能够打开它。 - Thanatos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接