Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不使用docptr的情况下将CDATA作为值添加到特定节点_C_Xml_Libxml2_Cdata - Fatal编程技术网

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

如何在不使用docptr的情况下将CDATA作为值添加到特定节点,c,xml,libxml2,cdata,C,Xml,Libxml2,Cdata,我想创建一个xml文件,如下所示。 我将子节点的值视为字符串,并使用函数xmlnewtexbad_CAST string添加它,其中string是我希望放置在子节点中的值 <?xml version="1.0" encoding="UTF-8"?> <Root> <child>![CDATA[<data>hello</data>]]</child> </Root> 但这已转

我想创建一个xml文件,如下所示。 我将子节点的值视为字符串,并使用函数xmlnewtexbad_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创建cdata部分。我需要在不使用docptr的情况下创建CDATA节。我只是带着根PTR。有可能吗?我使用c作为编程语言,我使用的库是libxml

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

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

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


诚然,有些应用程序确实关心普通文本和CDATA部分之间的差异。这些应用程序的技术术语已断开。

您应该为正在使用的编程语言添加一个标记。现在我都猜不出来了。