Каковы хорошие альтернативные форматы данных XML? - PullRequest
19 голосов
/ 04 сентября 2008

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

Ответы [ 25 ]

2 голосов
/ 04 сентября 2008

XML часто используется для конфигурации, и в этом случае часто используются другие простые форматы хранения (менее ориентированные на документы):

  1. .property files
  2. INI-файлы

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

1 голос
/ 11 ноября 2008

Ересь! XML - король данных. Скажи нет узурпаторам, с их головы! Да здравствует XML!

Если серьезно, если вам просто нужны данные, используйте Json для поддержки и элегантности, но если вам нужно форматирование, запросы, похожие на xpath, дополнительные метаданные и т. Д ... Придерживайтесь XML

Примечание. Я использую Xml для создания конфигурации системного кода и аналогичных задач, но Json для Rpc, Sql для запросов и постоянства и, наконец, Yaml здесь и там для ведения журналов и быстрых задач, другими словами, выбираю формат appriopiate для необходимо.

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

Я бы не отказался от простого текста, такого как CSV или табуляции.

Я действительно ищу альтернативы, которые имеют определенную структуру и (кросс-платформенная, многоязычная) поддержка библиотек. Я заинтересован в рассмотрении различных конструкций и их плюсы и минусы. Мне нравится идея форматов, которые могут иметь текстовый и «двоичный» (компактный, «скомпилированный», быстрый ввод / вывод, меньший размер) формат. Преимущество наличия библиотек состоит в том, что они выполняют для вас разбор и, возможно, дополнительную обработку / проверку данных.

Несмотря на это, безусловно, есть применение простым форматам, таким как .ini, .plist, CSV и т. Д. Не всегда нужно использовать молоток, чтобы сломать орех.

1 голос
/ 04 сентября 2008

JSON является действительным YAML , что может быть очень полезно. Два за одного!

1 голос
/ 04 сентября 2008

Для полноты картины упомяну Edifact , для которого я давно написал интерфейс.

1 голос
/ 11 ноября 2008

Но какой ценой?

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

(кроме того: моя привычка - использовать XML для внутреннего использования и преобразовывать его в JSON, где это является желаемым результатом)

1 голос
/ 13 апреля 2011

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

0 голосов
/ 29 апреля 2015

Если кто-то ищет менее многословную альтернативу XML, которая более или менее изоморфна XML, то существует AXON . Для объяснения рассмотрим примеры эквивалентных представлений в XML и AXON. Существует также библиотека Python pyaxon , которая поддерживает формат AXON.

XML

<person>
   <name>Alex</name>
   <age>34</age>
   <email>mail@example.com</email>
</person>

AXON

person {
  name {"Alex"}
  age {34}
  email {"mail@example.com"}}

XML

<memo date="2008-02-14">
<from>
<name>The Whole World</name><email>us@world.org</email>
</from>
<to>
<name>Dawg</name><email>dawg158@aol.com</email>
</to>
<message>
Dear sir, you won the internet. http://is.gd/fh0
</message>
</memo>

AXON

memo {
  date:2008-02-14
  from {
    name{"The Whole World"} email{"us@world.org"}}
  to {
    name{"Dawg"} email{"dawg158@aol.com"}}
  message {"Dear sir, you won the internet. http://is.gd/fh0"}
}

XML

<club>
  <players>
    <player id="kramnik"
       name="Vladimir Kramnik"
       rating="2700"
       status="GM" />
    <player id="fritz"
       name="Deep Fritz"
       rating="2700"
       status="Computer" />
    <player id="mertz"
      name="David Mertz"
      rating="1400"
      status="Amateur" />
  </players>
  <matches>
    <match>
      <Date>2002-10-04</Date>
      <White refid="fritz" />
      <Black refid="kramnik" />
      <Result>Draw</Result>
    </match>
    <match>
      <Date>2002-10-06</Date>
      <White refid="kramnik" />
      <Black refid="fritz" />
      <Result>White</Result>
    </match>
  </matches>
</club>

AXON

club {
  players {
    player {
      id:"kramnik"
      name:"Vladimir Kramnik"
      rating:2700
      status:"GM"}
    player {
      id:"fritz"
      name:"Deep Fritz"
      rating:2700
      status:"Computer"}
    player {
      id:"mertz"
      name:"David Mertz"
      rating:1400 
      status:"Amateur"}}
  matches {
    match {
     Date{2002-10-04}
     White{refid:"fritz"}
     Black{refid:"kramnik"}
     Result{"Draw"}}
    match {
      Date{2002-10-06}
      White{refid:"kramnik"}
      Black{refid:"fritz"}
      Result{"White"}}}}
0 голосов
/ 15 декабря 2014

Ради упоминания ... взгляните на мое предложение:

http://igagis.github.io/stob/

Это очень просто и не перегружено множеством специальных символов, просто {} и "" в основном.

Поддерживает комментарии в стиле C ++.

Существуют библиотеки C ++, C # и Java.

Пример:

"String object"
AnotherStringObject
"String with children"{
    "child 1"
    Child2
    "child three"{
        SubChild1
        "Subchild two"

        Property1 {Value1}
        "Property two" {"Value 2"}
        //comment

        /* multi-line
           comment */

        "multi-line
         string"

        "Escape sequences \" \n \r \t \\"
    }
}
0 голосов
/ 05 сентября 2008

Если вы спрашиваете в перспективе DSL, Схема Guile может помочь, как уже предлагалось с S-выражениями.

Лично я также использую JSON для транзакций AJAX.

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