Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中的Builder设计模式_Javascript_Xml_Json_Node.js_Design Patterns - Fatal编程技术网

javascript中的Builder设计模式

javascript中的Builder设计模式,javascript,xml,json,node.js,design-patterns,Javascript,Xml,Json,Node.js,Design Patterns,解析XML后需要构造自定义JSON文件。长话短说,我们有一个XML文件,必须从该文件创建一个JSON文件,但并非XML中的所有信息都必须以JSON形式呈现。必须仅使用JS和Node.JS完成此操作。为了解析XML,我使用了xmldom和fs 现在是我被卡住的部分。要创建JSON文件,我不能使用Web上已有的代码,因为Node.js的示例很少,而且我需要从XML中省略很多内容。循环也是不可能的,因为XMLDOM是递归的。现在,我使用以下代码来执行此操作: var builder = funct

解析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。

请您指定,什么不起作用?什么是预期结果,什么是实际结果?@kirilloid function builder.toJson=function{var s=JSON.stringifythis.meta;console.logs;}不打印上述代码的结果。在调试模式下,它甚至不进入内部。预期结果如下:[!category]=名称空间[!description]=etcYes,类似这样。我会试试的,谢谢。我基本上需要使用JS方法从XML文件创建一个JSON文件,使用相同的方法,这样linter可以使用后者来显示提示。非常感谢,您的建议很有帮助。我继续这项任务。