c - xmlReadMemory 不保留原始格式的空节点

标签 c linux libxml2

我在 C 中使用 libxml2 来解析 const char *这是 XML 格式。当我创建 xmlDocPtr对于这个字符串(使用 xmlReadMemory(..) ),结果 xmlDocPtr不保留原始形式的空节点 ( <tag></tag> )。它将每一对合并到一个标签 ( <tag/> ) 中。就我而言,它正在制造问题。 有什么办法可以保留这些空节点的原始形式吗? 我在 xmlReadMemory() 中看到“选项”参数,但不确定我是否可以将它用于此目的。

最佳答案

It consolidates each pair in a single tag (). In my case, it is creating problem.

就其值(value)而言,它依赖于 XML 不能保证的东西。规范说,“空元素的表示是紧跟结束标记的开始标记,或者是空元素标记。”

https://www.w3.org/TR/REC-xml/#sec-starttags

任何符合规范的 XML 解析器都应该将这两种表示视为同一事物。我不知道是否可以更改依赖它的任何代码,但那将是最“正确”的解决方案。

我知道有时候这些事情是我们无法控制的,只是想提出这个想法。

关于c - xmlReadMemory 不保留原始格式的空节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49316233/

相关文章:

xml - 如何在 PHP 中不显示警告的情况下检查字符串是否为有效 XML

C:传递函数指针两次

c - 循环交换与循环平铺

c - 是否可以将调用包装到静态链接的第 3 方库?

PHP - 验证程序是否正在运行

c++ - 是否可以在 C++ 中禁用 stderr?

c - C编译器如何解释以下代码序列

linux - 在 dockerfile 中设置 ulimit 参数

linux - 如何在 ssh 命令中使用长输入参数正确转义 qsub 命令?

c - Libxml2:输出带有属性和内容的 XML 元素