0

我一直在搜索,并想出了一些很好的答案,但是我的任务的最后一个小细节,我一直无法找到解决方案。

我有一个包含以下函数的 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

4

1 回答 1

1

您可能希望将其传递$data给函数,而不是依赖它是全局的。也就是说,您可能可以通过以下方式获取 XML 代码:

var div = $("<div></div>");
div.append($(this));
var newXMLcode = div.html();

另请注意,您在$(this)所有地方都在使用 - 您可能想要缓存它,就像var $this = $(this)然后使用它$this来代替您所有 jQuery 包装的需求。

于 2013-07-08T02:15:25.427 回答