Как получить запись незашифрованного HTML в файл?

Я использую чтение в.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 в выходном файле.

Как я могу получить записать файл XML без кодирования HTML?

1 ответ

Решение

Используя npm install, вы можете декодировать HTML после генерации XML. Это действительно генерирует "недопустимый" 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!");
    }
  });

});
Другие вопросы по тегам