Лучше ли иметь информацию об узле XML в качестве атрибута или дочернего узла? - PullRequest
2 голосов
/ 08 сентября 2010

Я предпочитаю структурировать свои документы XML следующим образом:

<root>
   <node info1="blah" info2="blah" />
   <node info1="blah" info2="blah" />
</root>

Вместо:

<root>
   <node>
      <info1>blah</info1>
      <info2>blah</info2>
   <node>
   <node>
      <info1>blah</info1>
      <info2>blah</info2>
   <node>
</root>

Я думаю, это облегчает чтение и упрощает навигацию. Есть ли причины, по которым второй пример будет лучше? Можно ли предположить, что моя структура лучше?

Очевидно, что если в данных есть отношение один ко многим, у меня нет проблем с перемещением их на собственный дочерний узел.

Ответы [ 3 ]

2 голосов
/ 08 сентября 2010

Мне нравятся атрибуты в интересах краткости и выразительности.

Я бы пошел с подузлом в следующих случаях:

  • Когда я ожидаю, что подузел будет иметьсвоя дополнительная информация.Пример: если info1 оказывается (или потенциально может стать) структурой, а не простым типом.
  • Допустим, info1 является оператором SQL, скриптом или одной из тех вещей, которые требуют большого количества escape-последовательностей.,Тогда громоздко писать это как атрибут.Намного проще сделать его подузлом, чтобы вы могли воспользоваться синтаксисом [! CDATA [.

. Иногда в моих файлах конфигурации я поддерживаю оба синтаксиса, так что автор файла конфигурации может сделатьрешение использовать один из них по своему усмотрению.

0 голосов
/ 02 августа 2012

Два еще не упомянутых различия:

  • доступ к XML с использованием атрибутов SAX ВСЕГДА доставляется в одном часть, в то время как элементы могут быть разделены
  • расширяемость благоприятствует элементам: info1 и info2 уже предлагают, может быть больше информации за один день; это намного проще, используя элементы
0 голосов
/ 08 сентября 2010

Два типа немного различаются с точки зрения ограничений, которые могут быть наложены DTD, и с точки зрения упорядочения потоковой передачи (все атрибуты узла доставляются до любого из его дочерних узлов).

В противном случае вы правы в том, что они взаимозаменяемы, а синтаксис атрибута более лаконичен.

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