解决方案1:
利用.cdata
( .dat
, 或.d
) 方法并链接每个方法来生成 XML 片段。例如:
Javascript:
var builder = require('xmlbuilder');
var element = {
notes_text: '<p>Hello <em>World</em></p>'
};
var xml = builder
.create('slides', { version: '1.0', encoding: 'UTF-8', standalone: true })
.ele('notestext')
.cdata(element.notes_text)
.end({
pretty: true
});
console.log(xml);
输出:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<slides>
<notestext>
<![CDATA[<p>Hello <em>World</em></p>]]>
</notestext>
</slides>
解决方案2:
另一种写法,更类似于你的例子,如下:
var builder = require('xmlbuilder', { encoding: 'utf-8' });
var element = {
notes_text: '<p>Hello <em>World</em></p>'
};
var xml = builder.create('slides');
xml.ele('notestext').cdata(element.notes_text);
xml.end({
pretty: true
});
console.log(xml.toString());
注意:这个例子使用的方法链接比前面的例子少,但是它确实将方法链接cdata
到ele
方法。
这将打印以下内容:
<slides>
<notestext>
<![CDATA[<p>Hello <em>World</em></p>]]>
</notestext>
</slides>
解决方案3:
或者,如果您不想链接任何方法,您可以执行以下操作:
var builder = require('xmlbuilder');
var element = {
notes_text: '<p>Hello <em>World</em></p>'
};
var rootElement = builder.create('slides');
var childElement = rootElement.ele('notestext')
childElement.cdata(element.notes_text);
rootElement.end({
pretty: true
});
console.log(rootElement.toString());
这也打印与解决方案 2相同的输出。
附加信息:
文档描述该.cdata
方法如下:
CDATA 节点
CDATA 节点是用cdata
函数创建的(也可以缩写为dat
or d
)。该值不应包含 CDATA 分隔符
ele.dat('this will be surrounded by CDATA delimiters');