我一直在搜索,我已经得到了一些很好的答案,但是我的任务的最后一个小细节,我一直无法找到解决方案。
我有一个包含以下功能的Node.js实现。此功能的目的是更改服务器上的xml文件的某些设置。到目前为止,我认为我已经完成了所有工作,但我无法弄清楚如何将已处理的xml字符串写回文件。
$data
是来自POST的JSON对象。
function SaveSettings() {
fs.readFile('config.xml', function (err, data) { //Read the XML file to a string
if(err) {throw err;} //If and error, throw error
var $xml = $(data.toString()).find('settings').each(function () { //Process XML
$(this).find('background > color').text($data.backgroundColor);
$(this).find('background > image').text($data.backgroundImage);
if($data.startupEnabled === "on") {
$(this).find('startup > enabled').text("true");
} else {
$(this).find('startup > enabled').text("false");
}
if($data.splashEnabled === "on") {
$(this).find('startup > splash > enabled').text("true");
} else {
$(this).find('startup > splash > enabled').text("false");
}
$(this).find('startup > splash > image').text($data.splashImage);
$(this).find('security > password').text($data.password);
});
console.log($xml.toString()); //Contains the output of the jQuery object (Not XML)
fs.writeFile('config.xml', data.toString(), function (err) {
if(err) {throw err;}
}); //data.toString() contains the original XML, unmodified.
});
...
}
我知道这可以用其他语言完成,但我真的很喜欢Node.js解决方案。我也在实现中加载了jstoxml
模块和jquery
模块。
答案 0 :(得分:1)
您可能希望将$data
传递给函数,而不是依赖它是全局函数。也就是说,您可以通过执行以下操作来获取XML代码:
var div = $("<div></div>");
div.append($(this));
var newXMLcode = div.html();
另请注意,您在整个地方使用$(this)
- 您可能希望将其缓存,例如var $this = $(this)
,然后使用$this
代替所有jQuery包装的要求