【问题标题】:XML DOM vs Object in JavascriptXML DOM 与 Javascript 中的对象
【发布时间】:2011-02-16 17:22:36
【问题描述】:

我最近写了一些代码,它接受一个 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 更快。

我的问题是: 你们中是否有人知道任何讨论使用这两种方法的利弊的研究或文章?我的假设是否离题?

【问题讨论】:

    标签: javascript dom object


    【解决方案1】:

    这是我的看法...

    优点:

    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's Razor(最简单的解决方案,只使用你得到的格式的数据,而不是添加更多的逻辑来解析它)。

    3) 可维护性。这假定您控制返回的 XML 结构。如果这样做,则必须维护 XML 的创建并确保更新 JSON 以匹配。 (如果写得好,可以尽量减少)。

    笔记

    如果我要在自己的时间编写一些东西,我会使用 JSON,因为我不喜欢在 javascript 中处理 XML,并且预先将其解析为 JSON 可以让我最大限度地减少 XML 在我的代码中出现的位置。无论哪种方式都有一些优点,因此这实际上归结为您(或您的主管)必须对性能与可读性做出判断。

    【讨论】:

    • 好点。如果我有时间,我可以尝试做一些测试,看看是否存在很大的性能差异。
    【解决方案2】:

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

    此外,即使它是一个“DOM”元素,它还没有被完全解析......您仍然必须使用 DOM 解析器来检测和解析 XML,然后才能按照 Mozila XML Data Island doc 实际使用它。

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 1970-01-01
      • 2012-03-29
      • 2012-01-07
      • 1970-01-01
      • 2014-11-02
      • 1970-01-01
      • 1970-01-01
      • 2021-05-16
      相关资源
      最近更新 更多