我想像下面那样创建和xml文件。
我将child
节点的值视为字符串,并使用函数xmlNewText(BAD_CAST string)
添加它,其中string是我想要放在子节点中的值
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<child>![CDATA[<data>hello</data>]]</child>
</Root>
但这会转换为
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<child>![CDATA[<data>hello</data>]]</child>
</Root>
任何人都可以指导我这样做吗?我看到了一些问题,答案是基于使用docptr创建cdatasection。我需要在不使用docptr的情况下创建cdatasection。我和我一起吃了rootptr。有可能这样做吗?我使用c作为编程语言,我使用的库是libxml
答案 0 :(得分:0)
您实际上无法通过将XML内容作为文本插入DOM来构建XML内容。此示例显示了一些原因 - 不仅DOM正确地转义文本节点的内容,而且您的语法错误。
而是使用节点工厂创建一个CDATASection节点,其中包含要包含在文档中的文本。
或者 - 因为没有充分的理由在这里使用CDATA部分 - 创建一个Text节点而不尝试手动包装其内容,并让DOM序列化器适当地转义它。您可能会逐个字符转义,这在XML文件中看起来不那么漂亮......但对于处理该XML的任何正确编写的应用程序来说,这意味着完全相同。
(不可否认,有些应用程序会关注普通文本和CDATA部分之间的区别。这些应用程序的技术术语“已损坏”。)