admin管理员组文章数量:1391955
I am using "xmlbuilder" node.js module to create xml file. I need to create a CDATA section as follows:
<notestext><![CDATA[{Notes Text}]]></notestext>
I referred the github link, but didn't found any useful stuff.
How to create such CDATA section in an xml file using "xmlbuilder" node.js module?
let builder = require('xmlbuilder', { encoding: 'utf-8' });
let xml = builder.create('Slides');
xml.ele("notestext","<![CDATA[" + element.notes_text + "]]>");
xml.end({ pretty: true });
console.log(xml.toString());
I am using "xmlbuilder" node.js module to create xml file. I need to create a CDATA section as follows:
<notestext><![CDATA[{Notes Text}]]></notestext>
I referred the github link, but didn't found any useful stuff.
How to create such CDATA section in an xml file using "xmlbuilder" node.js module?
let builder = require('xmlbuilder', { encoding: 'utf-8' });
let xml = builder.create('Slides');
xml.ele("notestext","<![CDATA[" + element.notes_text + "]]>");
xml.end({ pretty: true });
console.log(xml.toString());
Share
Improve this question
edited Nov 10, 2018 at 20:50
RobC
25.1k21 gold badges84 silver badges86 bronze badges
asked Nov 10, 2018 at 11:17
Kushagra SinhaKushagra Sinha
891 silver badge6 bronze badges
0
2 Answers
Reset to default 5From Doc you posted
CDATA Nodes CDATA nodes are created with the cdata function (can also be abbreviated to dat or d). The value should not include CDATA delimiters
ele.dat('this will be surrounded by CDATA delimiters');
var builder = require('xmlbuilder', { encoding: 'utf-8' });
var xml = builder.create('slides');
xml.ele('notestext').dat('{Notes Text}');
xml.end({
pretty: true,
indent: ' '
});
console.log(xml.toString());
Solution 1:
Utilize the .cdata
(.dat
, or .d
) method and chain each method to generate the XML fragment. For instance:
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);
Output:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<slides>
<notestext>
<![CDATA[<p>Hello <em>World</em></p>]]>
</notestext>
</slides>
Solution 2:
Another way to write it, which is more similar to your example, is as follows:
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());
Note: This example uses less method chaining than the previous example, however it does chain the cdata
method to the ele
method.
This prints the following:
<slides>
<notestext>
<![CDATA[<p>Hello <em>World</em></p>]]>
</notestext>
</slides>
Solution 3:
Alternatively, if you don't want to chain any methods you can do something like following:
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());
This also prints the same output as Solution 2.
Additional information:
The docs describe the .cdata
method as follows:
CDATA Nodes
CDATA nodes are created with the
cdata
function (can also be abbreviated todat
ord
). The value should not include CDATA delimiters
ele.dat('this will be surrounded by CDATA delimiters');
本文标签: javascriptUnable to create CDATA section in XML using quotxmlbuilderquot nodejs moduleStack Overflow
版权声明:本文标题:javascript - Unable to create CDATA section in XML using "xmlbuilder" node.js module - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1744679882a2619337.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论