Прежде чем XML стал стандартом и с учетом всех его недостатков, что сделало XML таким популярным? - PullRequest
13 голосов
/ 22 сентября 2008

Да, XML читается человеком, но текст и файлы свойств с разделителями-запятыми тоже.

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

Мои вопросы - какие самые привлекательные качества XML сделали его таким популярным ????

Ответы [ 23 ]

26 голосов
/ 22 сентября 2008

Одним из основных преимуществ, которые он имеет перед такими вещами, как файлы CSV, является то, что он может легко представлять иерархические данные. Чтобы сделать это, вам нужна либо самоописываемая древовидная структура, такая как XML, либо заранее заданный формат, такой как SWIFT или EDI (и если вы когда-либо имели дело с любым из них, то вы поймете, что XML тривиален для анализа в сравнении).

Одной из причин, по которой на самом деле довольно легко разобрать, является , потому что это «раздутый». Эти конечные теги означают, что вы можете точно сопоставить конец элементов с началом и работать, когда дерево стало несбалансированным. Вы не можете сделать это в «легких» альтернативах, таких как JSON.

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

И давайте не будем забывать о других артефактах, которые пришли с ним, таких как определенный механизм описания и проверки (XSD) и мощный и декларативный механизм преобразования (XSLT).

25 голосов
/ 22 сентября 2008

Это было в конце 90-х, и в интернете было очень жарко, но в компаниях были системы, которые не могли быть рядом с Интернетом. Они потратили бесчисленные часы, работая с CORBA, и планировали использовать Enterprise JavaBeans для связи этих старых систем с их более новыми системами.

Вместе с SGML, предшественником почти всех языков разметки (я пропускаю GML). SGML уже использовался для определения того, как определять HTML, но в HTML были определенные теги, которые ДОЛЖНЫ использоваться для того, чтобы Netscape правильно отображал данную веб-страницу.

Но что, если бы у нас были другие данные, которые нужно было объяснить? Ах, ха!

Таким образом, учитывая, что XML структурирован, и вы можете свободно определять эту структуру, он, естественно, позволяет создавать интерфейсы (с точки зрения не OO). На самом деле он не делает ничего такого, что уже делают другие языки интерфейса, но он дал людям возможность создавать свои собственные определения.

Языки интерфейса, такие как X12 и HL7, наверняка существовали, но с помощью XML люди могли адаптировать его к своим индивидуальным системам AIX или AS / 400.

И с преобладанием языка тегов из-за HTML, вполне естественно, что XML будет выдвинут на первый план из-за его простоты использования.

10 голосов
/ 22 сентября 2008

Прямо из уст лошади , цели разработки XML были:

  1. XML должен легко использоваться через Интернет.
  2. XML должен поддерживать широкий спектр приложений.
  3. XML должен быть совместим с SGML.
  4. Должно быть легко писать программы, которые обрабатывают документы XML.
  5. Количество необязательных функций в XML должно быть сведено к абсолютному минимуму, в идеале ноль.
  6. XML-документы должны быть удобочитаемыми и достаточно понятными.
  7. Дизайн XML должен быть подготовлен быстро.
  8. Дизайн XML должен быть формальным и лаконичным.
  9. XML-документы должны быть простыми в создании.
  10. Краткость в разметке XML имеет минимальное значение.

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

Вы действительно не можете сравнить XML с CSV, потому что CSV - чрезвычайно ограниченный способ представления данных. CSV не может обрабатывать что-либо за пределами базовой таблицы столбцов строк и не имеет понятия иерархии.

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

9 голосов
/ 22 сентября 2008

XML не сложно разобрать, на самом деле он довольно прост, учитывая объем превосходных API, доступных для каждого языка под солнцем.

Сам XML не раздутый, он может быть настолько кратким, насколько это необходимо, но ваша схема должна сохранять его таким.

XML обрабатывает иерархические наборы данных таким образом, что разделенный запятыми текст никогда не может или не должен.

XML самодокументируется / описывается и удобочитаем. Почему это стандарт? Ну, в первую очередь, потому что это можно стандартизировать. CSV не является (и не может быть) стандартом, поскольку существует множество вариантов.

6 голосов
/ 22 сентября 2008
  • Вам может быть предоставлен XML-файл, и вы сможете понять, что означают данные, прочитав его, не требуя отдельной спецификации вашего пре-XML-формата данных.
  • Инструменты могут использоваться для общей работы с xml. Где раньше, если бы все использовали разные форматы файлов: разделенные запятыми, двоичные и т. Д. Вам нужно было бы написать собственный инструмент.
  • Вы можете расширить его, добавив в схему новый тег со значением по умолчанию. И если все сделано правильно, с xml, который не нарушает весь старый код, который анализирует xml, но не знает о теге. Обычно это не так с проприетарными форматами.
  • Вероятно, главное, что делает его популярным, это то, что он немного похож на HTML, что многие люди понимали ранее. Так что он стал популярным, а потому, что он был популярен, он стал более популярным, потому что приятно работать с одним стандартом, который всем известен.
  • Плохо то, что xml обычно намного больше из-за всех тегов и из-за того, что его текст основан на том, что раньше использовалось. Но, поскольку компьютеры теперь стали больше, мы часто можем справиться с этим и с его выгодным размером для получения более качественных данных с самоописанием.
  • Вы можете получить готовый код / ​​библиотеки, которые будут анализировать / записывать xml.
6 голосов
/ 22 сентября 2008

У него много преимуществ и мало недостатков. Основная проблема - увеличенный размер файла и более медленная обработка. Однако есть и преимущества:

  • это структурировано, поэтому вы пишете парсер только один раз
  • поддерживает данные с вложенной структурой (иерархии, деревья и т. Д.)
  • Вы можете встроить несколько типов структуры данных в один XML
  • Вы можете описать схему (типы данных и т. Д.) Стандартным языком (XSL ...)
5 голосов
/ 22 сентября 2008

Как насчет того, что он поддерживает стандартизированный язык запросов XPath? Это довольно полезно для меня.

4 голосов
/ 22 сентября 2008

XML предоставляет очень простой способ представления данных. Разбор довольно прост - это очень правильная грамматика, которая поддается прямому рекурсивному анализу спуска. Это позволяет потребителям и производителям данных обмениваться информацией, не слишком много зная о своих соответствующих приложениях и внутренних устройствах.

Это, однако, крайне неэффективный способ представления данных, и он может быть подвергнут жестокому обращению. Примером этого является объектный интерфейс, с которым я работал, и вместо того, чтобы экспортировать конструкторы и свойства для конкретных объектов, мне потребовалось программно создать XML и передать полученный XML одному конструктору. Точно так же XML не подходит для больших наборов данных, которые могут требовать произвольного доступа без создания дополнительной системы каталогизации (т. Е. Если у меня есть документ на тысячу страниц в XML, мне потребуется проанализировать почти весь файл, чтобы перейти на страницу 999 при условии, что данные страницы упорядочены), в то время как было бы лучше поместить фактические данные страницы в отдельный файл или файлы и использовать XML, чтобы указать на правильный файл или позицию в файле.

3 голосов
/ 22 сентября 2008

Вы помните дни, когда XML стал популярным? Данные просто не были легко взаимозаменяемыми - одна программа получала файлы .csv, следующие .xls, следующие файлы в формате EBSIDIC. У XML есть свои слабые стороны, но он структурирован, что делает его анализируемым и трансформируемым.

Как вы указали, файлы CSV довольно переносимы. Тем не менее, нет значения для них. Что столбец (14) значит для меня? В отличие от ?

3 голосов
/ 24 сентября 2008

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

Если вы сравните дерево XML с его ближайшим структурным соседом, направленным ациклическим графом, вы можете заметить, что типичная группа обеспечения доступности баз данных несет только идентификатор и значение в каждом узле. XML также переносит это (тег gi /, соответствующий идентификатору, и текст узла, соответствующий значению), но каждый узел также может переносить и произвольное количество дополнительных метаданных: элементов. Это очень похоже на наличие дополнительного измерения - если вы считаете, что группа обеспечения доступности баз данных распространяется плоско в двух измерениях с каждой ветвью, документ XML распространяется в трех измерениях, плоско, а затем вниз в поддерево, содержащее только атрибуты. *

Это необязательный изгиб конструкции. Пройдите по списку атрибутов, как любой список дочерних элементов, и вы вернетесь к двумерному дереву. Полностью игнорируйте их, и у вас есть упрощенное дерево узлов / значений, которое может более просто представлять общую «форму» содержащихся данных. Но есть дополнительное измерение, если вам нужны метаданные.

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

...