1

我正在使用“xml-builder”节点模块创建一个 xml 文件。但是当我尝试写尖括号(“<”或“>”)时,我得到了“<”和“>”之类的字符。代码如下:

let builder = require('xmlbuilder', { encoding: 'utf-8' });
let name = "ABC";
let xml = builder.create('Slides');
xml.ele('props',"Hello").up();
xml.ele('name',"<Hello> "+name+" </Hello>").up();
xml.end({ pretty: true });
console.log(xml.toString())

输出如下:

<Slides>
  <props>Hello</props>
  <name>&lt;Hello&gt; ABC &lt;/Hello&gt;</name>
</Slides>

我应该怎么做才能得到<or>打印而不是&lt;or &gt;

4

2 回答 2

0

有一个 npm 模块decode-html将处理与您相同的用例。

var decode = require('decode-html');

console.log(decode('&lt;div class="hidden"&gt;NON&amp;SENSE&apos;s&lt;/div&gt;'));
// -> '<div class="hidden">NON&SENSE\'s</div>'
于 2018-11-09T04:57:39.027 回答
0

问题是您试图以不正确的方式创建子元素,方法是valuexml.ele. 该模块正确地转义了您的尖括号。

您需要做的是创建另一个名为的元素Hello并将其附加到该name元素。您可以通过链接.ele调用或使用它们的返回值来做到这一点。

这是正确的代码:

let builder = require('xmlbuilder', { encoding: 'utf-8' });
let name = "ABC";
let xml = builder.create('Slides');
xml.ele('props',"Hello");
xml.ele('name')
   .ele("Hello", name);
xml.end({ pretty: true });
console.log(xml.toString())

输出:

<Slides>
  <props>Hello</props>
  <name>
    <Hello>ABC</Hello>
  </name>
</Slides>
于 2018-11-09T13:11:40.213 回答