libxml2 保留空标签

标签 libxml2

libxml2(用于 C)在保存时不会保留原始形式的空元素。它取代了<tag></tag><tag/>这在技术上是正确的,但给我们带来了问题。

xmlDocPtr doc = xmlParseFile("myfile.xml");
xmlNodePtr root = xmlSaveFile("mynewfile.xml", doc);

我尝试过使用各种选项(使用 xlmReadFile ),但似乎都不会影响输出。这里的一篇文章提到禁用标签压缩,但该示例是针对 PERL 的,我没有发现 C 的类似情况。

是否有选项可以禁用此行为?

最佳答案

刚刚在 xmlsave module documentation 中找到了这个枚举 :

 Enum xmlSaveOption {
     XML_SAVE_FORMAT = 1 : format save output
     XML_SAVE_NO_DECL = 2 : drop the xml declaration
     XML_SAVE_NO_EMPTY = 4 : no empty tags
     XML_SAVE_NO_XHTML = 8 : disable XHTML1 specific rules
     XML_SAVE_XHTML = 16 : force XHTML1 specific rules
     XML_SAVE_AS_XML = 32 : force XML serialization on HTML doc
     XML_SAVE_AS_HTML = 64 : force HTML serialization on XML doc
     XML_SAVE_WSNONSIG = 128 : format with non-significant whitespace
 }

也许您可以重构您的应用程序以使用此模块进行序列化,并尝试一下这些选项。特别是 XML_SAVE_NO_EMPTY

关于libxml2 保留空标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10423839/

相关文章:

ios - 使用 Libxml2 解析 XML 时占用大量 RAM

xml - 使用 perl 的 XML::LibXML 如何使用 XML 前缀而不是 xmlns 属性?

c++ - 有没有办法在进程结束时对静态成员执行某些操作?

c - 在 C 中使用 xmlReadFile 时出现警告/错误

java - 将 libxml 添加到 Red Hat 中的 Eclipse 项目

php - 为什么 PHP 的 DOMDocument 从处理指令节点中删除前导空格? (<?php?>)

c - 如何读取libxml2中的小数?

c++ - libxml2 XPATH - 从 XML 中选择数据子集

perl - 如何从 Perl 中的 XML::LibXML 访问属性和元素?

c++ - Libxml2 xmlSetGenericErrorFunc 跨进程使用