javascript 中的构建器设计模式

Builder design pattern in javascript

需要在解析 XML 后构建自定义 JSON 文件。长话短说,有一个 XML 文件,必须从中创建一个 JSON 文件,但并非来自 XML 的所有信息都必须出现在 JSON 中。它必须只使用 JS 和 Node.js 来完成。为了解析 XML,我使用了 xmldom 和 fs。

现在是卡住的部分。要创建一个 JSON 文件,我不能使用已经在 Web 上可用的代码片段,因为 Node.js 的例子很少,而且我需要从 XML 中省略很多东西。循环也是不可能的,因为 XMLDOM 是递归的。现在我使用这段代码来做到这一点:

  var builder = function() {
    this.meta = {};
}

builder.atRoot = function(library) {
    this.meta["!name"] = library;
    this.meta["!define"] = {};
    this.define = this.meta["!define"];
}


builder.atNamespace = function(name) {
    this.namespace = {};
    this.namespace["!category"] = "namespace";
    this.namespace["!description"] = "";
    this.define[name] = this.namespace;
}

builder.atDescription = function(method){
    this.class = {};
    this.class["!Accordion"] = method;
    this.class["!AccordionSection"] = method;
    this.class["!ApplicationHeader"] = method;
....


}

// and so on

builder.toJson = function() {
    var s = JSON.stringify(this.meta);
    console.log(s);
}

但是没用。现在,可能是我根本不明白 builder 是如何工作的,或者这是错误的方式。任何关于错误的想法,或对构建器设计模式的额外解释将不胜感激。

非常感谢。

Builder 通常意味着递归。我不完全明白你需要什么,但似乎你需要创建一个属性名称的白名单,然后递归地将属性复制到新对象中,然后将其序列化为 JSON.