XML Collection Best Practices - PullRequest
       20

XML Collection Best Practices

4 голосов
/ 22 августа 2008

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

Вариант A

<School>
    <Student Name="Jack" />
    <Student Name="Jill" />
    <Class Name="English 101" />
    <Class Name="Math 101" />
</School>

Вариант B

<School>
    <Students>
        <Student Name="Jack" />
        <Student Name="Jill" />
    </Students>
    <Classes>
        <Class Name="English 101" />
        <Class Name="Math 101" />
    </Classes>
</School>

Ответы [ 4 ]

4 голосов
/ 22 августа 2008

Определенно - вариант Б.

Я бы не смешивал учеников и классы в XML так же, как я бы не совмещал учеников и классы в одной таблице в базе данных.

4 голосов
/ 22 августа 2008

Я не эксперт по XML, но я нахожу вариант B более читабельным для человека, и я думаю, что он так же машиночитаем, как и вариант A. Я считаю, что XML предназначен как для чтения человеком, так и для машины, поэтому я хотел бы иди к Варианту B сам.


Я только что понял кое-что еще после сообщения Райана Фарли. Если раздел «Студенты или классы» становится слишком большим и его необходимо переместить в другой XML-файл, кажется, что было бы проще скопировать узел и создать новый XML-файл из этого узла с параметром B.

2 голосов
/ 22 августа 2008

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

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

2 голосов
/ 22 августа 2008

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

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