javascript中的Builder设计模式
解析XML后需要构造自定义JSON文件。长话短说,我们有一个XML文件,必须从该文件创建一个JSON文件,但并非XML中的所有信息都必须以JSON形式呈现。必须仅使用JS和Node.JS完成此操作。为了解析XML,我使用了xmldom和fs 现在是我被卡住的部分。要创建JSON文件,我不能使用Web上已有的代码,因为Node.js的示例很少,而且我需要从XML中省略很多内容。循环也是不可能的,因为XMLDOM是递归的。现在,我使用以下代码来执行此操作: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
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可以使用后者来显示提示。非常感谢,您的建议很有帮助。我继续这项任务。