【问题标题】:xml indentationxml缩进
【发布时间】:2010-12-27 06:44:03
【问题描述】:

我正在使用 libxml2 的 xmlwriter api 编写一个 xml 文件。

当我使用记事本打开文件时,缩进不对。

有人知道怎么解决吗?

非常感谢。

【问题讨论】:

    标签: xml libxml2


    【解决方案1】:

    我在这里有点犹豫,但我会说“缩进不正确”是指它根本没有缩进。

    默认情况下,libxml2 不会缩进您的 XML 文件,因为在 XML 中,空格(包括用于缩进的空格)是重要的数据。也就是这个XML文件:

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

    在语义上不同于:

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

    ... 因为第一个 XML 文件中的两个字符数据片段对您(程序员)可能很重要,因此,XML 在读取文件时将它们保留在那里,并且在写入时不会输出它们(除非指示) .

    也就是说,这是一个经常被滥用的 XML。遗憾的是,我见过的大多数 XML 都是缩进的。 libxml2 具有在写入时自动输出缩进并在读取时将其删除的选项,但请注意:对此有一些警告:它可能会出错。文档说得更多。

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

    注意这里的警告:libxml2 FAQ

    以及这里的信息:XML Specification

    【讨论】:

    • 你说得对,我的意思是 libxml2 写入数据时没有缩进。
    • 当我使用 xmlTextWriterSetIndent 函数时,它会在每个标签后添加空格,但不会添加新行。使文件在记事本上看起来很奇怪。
    • 我冒昧地猜测它只是添加了一个'\n',而你(或它)以二进制模式打开了文件。不要使用记事本——它很可能是地球上最糟糕的文本编辑器。 Notepad++ 是一个好的开始,如果您的文件仅使用 '\n' 作为行尾(典型的 Unix 文件),Notepad++ 将能够打开它。
    猜你喜欢
    • 1970-01-01
    • 2013-05-14
    • 2014-02-19
    • 2021-03-04
    • 2017-08-12
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    相关资源
    最近更新 更多