代码之家  ›  专栏  ›  技术社区  ›  AngularM

Xml生成器在创建Xml结构时不使用CDATA

  •  0
  • AngularM  · 技术社区  · 6 年前

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

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

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

    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());
    
    0 回复  |  直到 6 年前
        1
  •  3
  •   Redanium    6 年前

    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());
    
        2
  •  1
  •   RobC Manuel Gonzalez    6 年前

    解决方案1:

    利用 .cdata .dat .d )方法并链接每个方法以生成XML片段。例如:

    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酒店 函数(也可以缩写为 dat d

    ele.dat('this will be surrounded by CDATA delimiters');