Какие применимые альтернативы синтаксису XML Вы знаете? [закрытый]

Поскольку вопрос уже ответил, то лучший способ - использовать метод удаления объекта итератора, я хотел бы перейти к особенностям места, где была выбрана ошибка "java.util.ConcurrentModificationException".

Каждый класс коллекции имеет частный класс, который реализует интерфейс Iterator и предоставляет такие методы, как next(), remove() и hasNext().

Следующий код выглядит примерно так:

public E next() {
    checkForComodification();
    try {
        E next = get(cursor);
        lastRet = cursor++;
        return next;
    } catch(IndexOutOfBoundsException e) {
        checkForComodification();
        throw new NoSuchElementException();
    }
}

Здесь метод checkForComodification реализован как

final void checkForComodification() {
    if (modCount != expectedModCount)
        throw new ConcurrentModificationException();
}

Итак, как вы можете видеть, если вы явно попытаетесь удалить элемент из коллекции. Это приводит к тому, что modCount отличается от expectedModCount, что приводит к исключению ConcurrentModificationException.

25
задан pramodc84 18 December 2017 в 09:12
поделиться

8 ответов

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

Я не могу придумать, что XML может делать, чего не может YAML, кроме как проверять документ с помощью DTD, что, по моему опыту, никогда не стоило накладных расходов. Но YAML намного быстрее и легче набирать и читать, чем XML.

Что касается атрибутов или свойств, если вы подумаете, они на самом деле ничего не «добавляют» ... это всего лишь сокращенное обозначение для записи чего-либо в качестве атрибута узла вместо того, чтобы помещать это в его собственный дочерний узел . Но если вам нравится это удобство, вы можете часто имитировать его с помощью встроенных списков / хэшей YAML. Например:

<!-- XML -->
<Director name="Spielberg">
    <Movies>
        <Movie title="Jaws" year="1975"/>
        <Movie title="E.T." year="1982"/>
    </Movies>
</Director>


# YAML
Director: 
    name: Spielberg
    Movies:
      - Movie: {title: E.T., year: 1975}
      - Movie: {title: Jaws, year: 1982}

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

49
ответ дан 28 November 2019 в 17:43
поделиться

AFAIK, JSON и YAML точно эквивалентны в терминах структуры данных. YAML просто имеет меньше скобок и кавычек и материала. Таким образом, я не вижу, как Вы отклоняете один и сохраняете другой.

кроме того, я не вижу, как угловые скобки XML менее "человекочитаемы", чем квадратные скобки JSON, фигурные скобки и кавычки.

0
ответ дан rjmunro 28 November 2019 в 17:43
поделиться

Если у Вас аллергия на угловые скобки, то JSON, HDF (ClearSilver), и OGDL является единственными, которые я знаю бесцеремонно.

После небольшого количества гугления, я также нашел список альтернатив здесь:
http://web.archive.org/web/20060325012720/www.pault.com/xmlalternatives.html

1
ответ дан David Crow 28 November 2019 в 17:43
поделиться

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

2
ответ дан epatel 28 November 2019 в 17:43
поделиться

Я рекомендовал бы JSON..., но так как Вы уже упомянули его, возможно, необходимо смотреть на буферы протокола Google .

Редактирование: буферы Протокола сделаны использоваться программно (существует привязка для C++, Java, Python...), таким образом, они не могут подойти для Вашей цели.

3
ответ дан Pat 28 November 2019 в 17:43
поделиться

Jeff записал об этом здесь и здесь . Это должно помочь Вам начать.

5
ответ дан Giovanni Galbo 28 November 2019 в 17:43
поделиться

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

13
ответ дан Staale 28 November 2019 в 17:43
поделиться

Вы - требования, немного невозможны.. Вы хотите что-то близко к XML, но отклоняете, вероятно, самый близкий эквивалент, который не имеет угловой скобки (YAML).

так, как мне не нравится он, почему не просто используют XML? Вам никогда не придется на самом деле читать XML (кроме отладки, я предполагаю), существует абсурдная сумма инструментов о для него.

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

JSON, вероятно, об эквиваленте, но это в значительной степени одинаково нечитабельно.. но снова, Вам никогда не придется на самом деле читать, это (загрузите его на любой язык, который Вы используете, и это должно быть преобразовано в собственный arrays/dicts/variables/whatever).

, О, я действительно нахожу JSON далеко более хорошим проанализировать, чем XML: я использовал его в JavaScript и simplejson модуле Python - об одной команде, и это приятно преобразовывается в собственный Python dict или объект JavaScript (таким образом имя!)

3
ответ дан dbr 28 November 2019 в 17:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: