gpt4 book ai didi

c - 如何在不使用 docptr 的情况下将 CDATA 作为值添加到特定节点

转载 作者:行者123 更新时间:2023-11-30 17:41:41 25 4
gpt4 key购买 nike

我想创建如下所示的 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[&lt;data&gt;hello&lt;/data&gt;]]</child>
</Root>

有人可以指导我这样做吗?我看到了一些问题,答案基于使用 docptr 创建 cdatasection。我需要在不使用 docptr 的情况下创建 cdatasection。我身上只有 rootptr。可以这样做吗?我使用 c 作为编程语言,我使用的库是 libxml

最佳答案

您确实无法通过将 XML 内容作为文本插入到 DOM 中来构造 XML 内容。这个例子展示了一些原因——不仅 DOM 正确地转义了文本节点的内容,而且语法也是错误的。

相反,请使用节点工厂创建一个包含要包含在文档中的文本的 CDATASection 节点。

或者——因为这里没有充分的理由使用 CDATA 部分——创建一个 Text 节点,而不尝试手动将其内容包装在 中,并让 DOM 序列化程序根据需要转义它。您可能会遇到逐个字符的转义,这在 XML 文件中看起来不太漂亮……但对于处理该 XML 的任何正确编写的应用程序来说,这意味着完全相同的事情。

(诚然,有些应用程序确实关心普通文本和 CDATA 部分之间的差异。这些应用程序的技术术语是“损坏的”。)

关于c - 如何在不使用 docptr 的情况下将 CDATA 作为值添加到特定节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21036888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com