XML DOM和Javascript中的对象有什么区别?

3

最近我写了一段代码,它将XML DOM对象转换成Javascript对象。在和一个同事交谈后,我开始质疑这是否是一个值得的方法。

你们中有没有人知道任何研究或文章讨论使用这两种方法的利弊?

示例: 我的代码将采用像这样的XML DOM对象结构进行转换(由于NDA而更改了代码):

<myObject id="123" anotherAttr="hello" customAttr="foo">
  <myChild name="child1" foo="bar"/>
  <myChild name="child2" foo="bar"/>
  <myChild name="child3" foo="bar"/>
</myObject>

并且会返回这个:

{
  id: "123",
  anotherAttr: "hello",
  customAttr: "foo",
  children: [
    {name: "child1", foo: "bar"},
    {name: "child2", foo: "bar"},
    {name: "child3", foo: "bar"}
  ]
}

我这样做的三个主要原因:

  1. 代码更易读。(使用对象时,可以通过点符号访问值)
  2. 我一直认为使用对象比使用DOM快。

再次提出我的问题: 你们中是否有人知道任何研究或文章讨论使用这两种方法的利弊?我的假设是否完全错误?

2个回答

2

在我看来,使用JavaScript版本要好得多,因为Xml版本不是标准HTML。虽然浏览器宽容,可能允许你有一个"xml数据岛"(MSXML3),但我仍建议使用JavaScript对象。

此外,尽管它是一个"DOM"元素,但它还没有被完全解析... 在实际可用之前,您仍需要使用DOM解析器来检测和解析XML,如Mozila XML Data Island文档所述。


2

这是我的看法...

优点:

1)代码将更易于阅读,方便未来的程序员

var name = xml.selectSingleNode("myObject/myChild")[4].getAttribute("name");
//vs
var name = myObject.children[4].name

2) 你可以获得智能感知(假设你正在使用支持javascript智能感知的IDE)

3) 你可以完全定义XML中可用和不可用的内容(它可能包含一堆你不想永久保留的垃圾)

4) 如果你需要修改值并进行操作,你将不得不承担已经通过xml的开销。最好只做一次。

缺点:

1) 创建一个新对象会有一定的开销。这可能取决于XML的大小以及您是否要访问解析出来的每个元素/属性。

2) 奥卡姆剃刀原理(使用获取到的数据格式作为最简单的解决方案,而不是添加更多的逻辑来解析它)。

3) 可维护性。这假设您控制返回的XML结构。如果是这样,您将不得不维护XML的创建,并确保JSON与之匹配。(如果编写良好,则可以将其最小化)。

注释

如果我要在自己的时间里写点东西,我会使用JSON,因为我不喜欢在JavaScript中处理XML,并且将其解析为JSON可以让我尽量减少代码中出现XML的地方。无论哪种方式都有一些优点,所以最终是你(或你的主管)需要在性能和可读性之间做出判断。


很好的观点。如果我有时间,我可以尝试做一些测试,看看是否有很大的性能差异。 - Barlow Tucker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接