Рекомендации XML: атрибуты и дополнительные элементы

В чем разница между ними и когда я должен использовать их каждый:

 Joe Plumber  

против

  

благодаря

В вашем примере есть центрированный элемент и атрибут XML, в первом примере он ориентирован на элемент, второй – на атрибут.

В большинстве случаев эти два шаблона эквивалентны, однако есть некоторые исключения.

Атрибут ориентирован

  • Меньший размер, чем элементный.
  • Не очень интероперабельна, так как большинство парсеров XML будут думать, что пользовательские данные представлены элементом, Атрибуты используются для описания элемента.
  • Невозможно представить значение NULL для некоторого типа данных. например, nullable int
  • Невозможно выразить сложный тип.

Элемент в центре

  • Сложный тип может быть представлен только как элементный узел.
  • Очень совместимый
  • Больший размер, чем атрибут. (сжатие может быть использовано для значительного исключения размера)
  • Нулевые данные могут быть выражены с помощью атрибута xsi: nil = “true”
  • Быстрее разбираться, поскольку анализатор только ищет элементы для пользовательских данных.

практический

Если вы действительно заботитесь о размере XML, используйте атрибут, когда можете, если это уместно. Оставьте нулевой, сложный тип и узел, которые будут содержать большое текстовое значение в качестве элементов. Если вам не нужен размер XML или у вас есть возможность сжатия во время трансакции, придерживаться элементов. Это более расширяемо.

Задний план

В DOT NET XmlSerializer может сериализовать свойства объектов в атрибуты или элементы. В недавно разработанной среде WCF сериализатор DataContract может только сериализовать свойства в элементах, и он быстрее, чем XmlSerializer, причина очевидна, ему просто нужно искать пользовательские данные из элементов при десериализации.

Здесь статья объясняет это также Элемент против атрибута

Когда-нибудь в будущем, когда вы добавите свойство

, вы не захотите сделать его атрибутом XML. Это связано с тем, что

может быть более сложным элементом, состоящим из уличного адреса, города, страны и т. Д.

По этой причине вам может понадобиться выбрать первую форму подэлемента, если вы не уверены, что атрибуту не нужно будет углубляться. Первая форма обеспечивает большую расширяемость в будущем.

Если вас вообще беспокоит пространство, сжимайте свой XML.

В моей компании мы предпочли бы второй подход.

То, как мы думаем об этом, состоит в том, что «firstname» и «lastname» являются атрибутами «персонального» узла, а не подполей «человека». Это тонкая разница.

По моему мнению, второй подход более краткий, а читаемость / ремонтопригодность значительно улучшены, что очень важно.

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

Вы также можете увидеть ответы на этот вопрос, который я задал некоторое время назад. Я нашел ответы полезными.

Атрибуты не чувствительны к порядку. Это может быть преимуществом или недостатком в зависимости от вашей ситуации.

Атрибуты не могут быть дублированы. Если «Джо» имеет два первых имени, то узлы – единственный путь.

Я нашел следующую информацию, очень полезную для объяснения выбора атрибутов и элементов в короткие сроки

Некоторые из проблем с использованием атрибутов:

атрибуты не могут содержать несколько значений (элементы могут)
атрибуты не могут содержать древовидные структуры (элементы могут)
атрибуты не просто расширяемы (для будущих изменений)

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

источник: http://www.w3schools.com/xml/xml_attributes.asp

  • Ограничение XML-элементов на основе другого элемента через XSD
  • Как декодировать строку в строку XML в C #
  • Регулярное выражение \ p {L} и \ p {N}
  • Почему getRealPath () возвращает null при развертывании с .war-файлом?
  • Динамически генерировать запросы LINQ
  • XML-анализ - чтение простого XML-файла и получение значений
  • Анализ локального XML-файла с использованием Sax в Android
  • Преобразование набора данных в XML
  • Как проверить файл XML с помощью Java с XSD с включенным?
  • MSBuild Script и VS2010 публикуют применение преобразования Web.config
  • Разделение XML на несколько файлов с помощью XSLT
  • Давайте будем гением компьютера.