XML-DOM与Javascript中的对象

XML-DOM与Javascript中的对象,javascript,dom,object,Javascript,Dom,Object,我最近编写了一些代码,获取了一个XMLDOM对象,并以Javascript返回了一个对象。在与同事交谈后,我怀疑这是否值得一试 你们当中有人知道有任何研究或文章讨论使用这两种方法的利弊吗 示例: 我的代码将采用如下结构的XML DOM对象(代码因NDA而更改): 我这样做的三个主要原因是: 代码更具可读性。(使用对象,我可以使用点符号访问值) 我一直认为使用对象比使用DOM快 我的问题是: 你们当中有人知道有任何研究或文章讨论使用这两种方法的利弊吗?我是否偏离了我的假设?在我看来,使用JavaS

我最近编写了一些代码,获取了一个XMLDOM对象,并以Javascript返回了一个对象。在与同事交谈后,我怀疑这是否值得一试

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

示例: 我的代码将采用如下结构的XML DOM对象(代码因NDA而更改):

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

  • 代码更具可读性。(使用对象,我可以使用点符号访问值)
  • 我一直认为使用对象比使用DOM快
  • 我的问题是:
    你们当中有人知道有任何研究或文章讨论使用这两种方法的利弊吗?我是否偏离了我的假设?

    在我看来,使用JavaScript版本要好得多,因为Xml版本不是标准的HTML。虽然浏览器是宽容的,并且可能允许您拥有一个“xml数据岛”(MSXML3),但我还是坚持使用JavaScript对象


    此外,即使它是一个“DOM”元素,它还没有被完全解析。。。根据

    的规定,在XML实际可用之前,您仍然必须使用DOM解析器来检测和解析XML。以下是我对它的看法

    优点:

    1) 这些代码对未来的程序员来说更具可读性

    var name = xml.selectSingleNode("myObject/myChild")[4].getAttribute("name");
    //vs
    var name = myObject.children[4].name
    
    2) 您获得了intellisense(假设您使用的是支持intellisense for javascript的IDE)

    3) 您可以完全定义xml中哪些内容可用,哪些不可用(它可能包含一堆您不想永远保留的垃圾)

    4) 如果您必须修改这些值并进行操作,那么您将不得不承担一次xml检查的开销。最好只做一次

    缺点

    1) 创建一个新对象有一个开销。这可能很小,也可能不小,这取决于XML的大小,以及是否要命中解析出的每个元素/属性

    2) Occam的Razor(最简单的解决方案是只使用您获得的格式的数据,而不是添加更多的逻辑来解析数据)

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

    注释


    如果我在自己的时间写一些东西,我会使用JSON,因为我不喜欢在javascript中处理XML,预先将其解析为JSON将允许我最小化XML在代码中出现的位置。这两种方法都有一些优点,因此,这实际上归结为您(或您的主管)必须对性能和可读性做出判断。

    这是一个很好的观点。如果我有时间,我可以试着做一些测试,看看是否有很大的性能差异。
    {
      id: "123",
      anotherAttr: "hello",
      customAttr: "foo",
      children: [
        {name: "child1", foo: "bar"},
        {name: "child2", foo: "bar"},
        {name: "child3", foo: "bar"}
      ]
    }
    
    var name = xml.selectSingleNode("myObject/myChild")[4].getAttribute("name");
    //vs
    var name = myObject.children[4].name