我在 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/