2011-02-16 60 views
3

我最近编写了一些代码,它使用了XML DOM对象并返回了Javascript中的对象。在与同事交谈之后,我质疑这是否值得。XML DOM vs 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

这里是我看到它... ...

优点:

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)Occam的Razor(最简单的解决方案就是以获取它的格式使用数据,而不是添加更多的逻辑来解析它)。

3)可维护性。这假定您控制返回的XML结构。如果你这样做,你将不得不维护XML的创建,并确保JSON更新为匹配。 (如果写得很好,可以将其最小化)。

笔记

如果我写我自己的东西时,我会使用JSON,因为我不喜欢来处理XML JavaScript和它解析为JSON前期可以让我最小化XML在我的代码中出现的位置。在任何一个方面都有一些好的观点,所以这真的归结为你(或你的主管)必须做出的对性能和可读性的判断。

+0

伟大的一点。如果我有时间,我可以尝试做一些测试,看看是否有很大的性能差异。 – 2011-02-16 18:53:36

2

在我看来,使用JavaScript版本更好,因为Xml版本不是标准的HTML。虽然浏览器是宽容的,并可能允许你有一个“XML数据岛”(MSXML3),我会坚持使用JavaScript对象。

而且,即使它是一个“DOM”元素,这是不太解析尚未...你仍然必须使用DOM解析器来检测和解析XML之前,它是实际可用为每Mozila XML Data Island doc

+0

谢谢,这个信息将非常有用 – 2011-02-16 18:52:31