XML DOM против объекта в Javascript - PullRequest
3 голосов
/ 16 февраля 2011

Недавно я написал некоторый код, который взял объект 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 голосов
/ 16 февраля 2011

Вот как я это вижу ...

Плюсы:

1) Код будет более читабельным для будущих программистов

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

2) Вы получаете intellisense (при условии, что вы используете IDE, поддерживающую intellisense для javascript)

3) Вы можете полностью определить, что будет, а что не будет доступно в xml (он может содержать группумусора, который вы не хотите хранить вечно)

4) Если вам нужно будет изменить значения и выполнить манипуляции, вам придется взять на себя дополнительные затраты, связанные с прохождением xml один раз.Можно также сделать это только один раз.

Минусы :

1) Существуют накладные расходы на создание нового объекта.Это может быть или не быть маленьким в зависимости от размера XML и того, собираетесь ли вы в любом случае разбирать каждый элемент / атрибут, который вы анализируете.

2) Бритва Оккама (самое простое решение - просто использовать данные вформат, который вы получите, вместо добавления дополнительной логики для его анализа).

3) Ремонтопригодность.Это предполагает, что вы контролируете возвращаемую структуру XML.Если вы это сделаете, вам придется поддерживать создание XML и убедиться, что JSON обновлен для соответствия.(Если это хорошо написано, это может быть сведено к минимуму).

примечания

Если бы я написал что-то в свое свободное время, я бы использовал JSON, так какЯ не люблю иметь дело с XML в javascript, и его синтаксический анализ в JSON позволил бы мне минимизировать, где XML встречается в моем коде.В любом случае есть несколько положительных моментов, поэтому на самом деле все зависит от оценки производительности и читабельности, которую вам (или вашему руководителю) придется сделать.

2 голосов
/ 16 февраля 2011

По моему мнению, использование версии JavaScript намного лучше, потому что версия Xml не является стандартным HTML. Хотя браузеры прощают и, вероятно, позволят вам иметь «остров данных XML» (MSXML3), я бы придерживался объекта JavaScript.

Более того, несмотря на то, что это элемент "DOM", он еще не полностью проанализирован ... вам все равно придется использовать синтаксический анализатор DOM для обнаружения и анализа XML, прежде чем он будет фактически использован в соответствии с Mozila XML Data Island doc

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...