无法使用“ xmlbuilder” node.js模块在XML中创建CDATA部分

时间:2018-11-10 11:17:39

标签: javascript node.js xml npm xml-builder

我正在使用“ xmlbuilder” node.js模块来创建xml文件。我需要创建一个CDATA部分,如下所示:

<notestext><![CDATA[{Notes Text}]]></notestext>

我提到了github link,但是没有发现任何有用的东西。

如何使用“ xmlbuilder” node.js模块在xml文件中创建此类CDATA部分?

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());

2 个答案:

答案 0 :(得分:2)

您发布的Doc中的

  

CDATA节点CDATA节点是使用cdata函数创建的(也可以   缩写为dat或d)。该值不应包含CDATA   分隔符

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());

答案 1 :(得分:0)

解决方案1:

利用@ResponseBody@Controller public class HelloController{ @RequestMapping("/") @ResponseBody public String index() { return "index"; } } bdv. mot. g. vns. kilm. )方法并链接每个方法以生成XML片段。例如:

Javascript:

.cdata

输出

.dat

解决方案2:

另一种类似于您的示例的编写方法如下:

.d

注意:该示例使用的方法链比上一个示例少,但是它确实将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> 方法。

这将打印以下内容:

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());

解决方案3:

或者,如果您不想链接任何方法,则可以执行以下操作:

cdata

这也会输出与解决方案2 相同的输出。


其他信息:

文档对ele方法的描述如下:

  

CDATA节点

     

CDATA节点是使用<slides> <notestext> <![CDATA[<p>Hello <em>World</em></p>]]> </notestext> </slides> 函数创建的(也可以缩写为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()); .cdata)。该值不应包含CDATA分隔符

     

cdata