如何将未编码的html写入文件?

时间:2014-12-10 17:55:06

标签: node.js xml-builder

我正在使用文件系统中的.HTML片段进行阅读;它只包含<h1>Hulton Archive</h1>。然后我正在编写一个新的XML文件,该文件必须包含某个元素中的HTML片段。使用XMLbuilder从中构建XML文件。这就是我所拥有的:

var fs = require('fs');
var xml2js = require('xml2js');
var builder = new xml2js.Builder();
var parseString = require('xml2js').parseString;
var result;

var inputFile = "html-snippet.html";
var outputFile = "test.xml";

fs.readFile(inputFile, "UTF-8", function (err, data) {
  if (err) {
    return console.log(err);
  }

  console.log(data);

  var obj = {name: "Super", Surname: "Man", age: data};

  var outputXML = builder.buildObject(obj);

  fs.writeFile(outputFile, outputXML, function(err) {
    if(err) {
      console.log(err);
    } else {
      console.log(outputFile + " was saved!");
    }
  });

});

问题是HTML标签是在输入文件中编码的;已从<h1>header</h1>更改为&lt;h1&gt;header&lt;/h1&gt;。我想保留HTML标记,而不是在输出文件中对它们进行编码。

我尝试使用XMLbuilder(https://github.com/oozcitak/xmlbuilder-js)和xml2js(https://github.com/Leonidas-from-XIV/node-xml2js)编写此文件。看起来他们俩都在输出文件上编码HTML。

如何在不编码HTML的情况下写出XML文件?

1 个答案:

答案 0 :(得分:0)

使用npm install ent,您可以在生成XML后解码HTML。但这确实会生成“无效”的XML。对于大多数人来说,CDATA可能是更好的选择。

var fs = require('fs');
var xml2js = require('xml2js');
var builder = new xml2js.Builder();
var parseString = require('xml2js').parseString;
var decode = require('ent').decode;

var result;

var inputFile = "html-snippet.html";
var outputFile = "test.xml";

fs.readFile(inputFile, "UTF-8", function (err, data) {
  if (err) {
    return console.log(err);
  }

  console.log(data);

  var obj = {name: "Super", Surname: "Man", age: data};

  var outputXML = decode(builder.buildObject(obj));

  fs.writeFile(outputFile, outputXML, function(err) {
    if(err) {
      console.log(err);
    } else {
      console.log(outputFile + " was saved!");
    }
  });

});