Решение 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
или d
). Значение не должно включать разделители CDATA
ele.dat('this will be surrounded by CDATA delimiters');