如何创建包含CDATA的xml元素

时间:2014-06-17 19:25:38

标签: javascript jquery xml

我需要从javascript创建一个xml,其中一些xml元素标记包含简单的字符串数据,而一些将包含html数据。因为我已经创建了一个函数

function element(child, childValue) {
var element = document.createElementNS(url, child);
var elementText = document.createTextNode(childValue);
element.appendChild(elementText);
return element;
}

通过这种方式调用abobe函数“function(widgetData,widget1)”。它创建了xml元素。

"<widgetData>widget1<widgetData>"

现在我需要创建包含html数据的xml标记,以便按照以下方式调用上面的函数

function(widgetData, '<p>hello, world </p>')

它创建了xml元素

<widgetData>&lt;p&gt;Hello, world&lt;/p&gt;</widgetData>

我想我们可以通过CDATA来做到这一点

<widgetData><![CDATA[<p>hello, world </p>]]></widgetData>

但不知道该怎么做。

我试过

var elementText = document.CreateCDataSection(childValue);

但它在chrome中给出错误“未定义的函数”。在Firefox中出现“不支持的html文档”错误。

1 个答案:

答案 0 :(得分:2)

您想要使用.createCDATASection

以下内容应该有效:

function element(child, childValue) {
  var element = document.createElementNS(url, child);
  var section = document.createCDATASection(childValue);
  element.appendChild(section);
  return element;
}

请注意:

  

这只适用于XML,而不适用于HTML文档(因为HTML文档不支持CDATA部分);在HTML文档上尝试它会抛出NOT_SUPPORTED_ERR。