0

ファイル システムからの .HTML スニペットの読み取りを使用しています。だけが含まれています<h1>Hulton Archive</h1>。次に、特定の要素にその HTML スニペットを含める必要がある新しい XML ファイルを作成しています。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 タグをエンコードする代わりに、HTML タグを保持したいと考えています。

XMLbuilder ( https://github.com/oozcitak/xmlbuilder-js ) と xml2js ( https://github.com/Leonidas-from-XIV/node-xml2js )の両方を使用してこのファイルを書き込もうとしました。どちらも出力ファイルの HTML をエンコードしていたようです。

HTML をエンコードせずに XML ファイルを書き出すにはどうすればよいですか?

4

1 に答える 1

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!");
    }
  });

});
于 2014-12-12T00:32:24.870 に答える