2014-12-10 2 views
0

파일 시스템에서 .HTML 스 니펫으로 읽기를 사용하고 있습니다. 단지 <h1>Hulton Archive</h1>을 포함합니다. 그런 다음 특정 요소에 HTML 스 니펫을 포함해야하는 새 XML 파일을 작성하고 있습니다. XMLbuilder를 사용하여 XMLbuilder를 빌드합니다. 다음은 내가 가지고있는 것입니다.파일에 인코딩되지 않은 HTML을 작성하는 방법은 무엇입니까?

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 파일을 작성하려면 어떻게해야합니까?

+0

예 : https://github.com/oozcitak/xmlbuilder-js/wiki#cdata-nodes를 사용해야합니다. – generalhenry

답변

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

}); 
관련 문제