【发布时间】:2015-06-26 03:53:24
【问题描述】:
解析 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 是如何工作的,或者它是错误的方式。任何关于错误的想法或构建器设计模式的额外解释将不胜感激。
非常感谢。
【问题讨论】:
-
您能否具体说明,“不起作用”是什么意思?什么是预期结果,什么是实际结果?
-
@kirilloid function builder.toJson = function() { var s = JSON.stringify(this.meta);控制台.log(s); } 不打印上面代码的结果。在调试模式下,它甚至不会进入其中。预期的结果是这样的: ["!category"] = "namespace" ["!description"] = "" etc
标签: javascript xml json node.js design-patterns