Вопрос
Я создаю приложение, которое будет хранить иерархическую коллекцию элементов в XML-файле, и мне интересно узнать об отраслевом стандарте хранения коллекций в XML.Какой из следующих двух форматов предпочтительнее?(Если есть другой вариант, которого я не вижу, пожалуйста, посоветуйте.)
Вариант А
<School>
<Student Name="Jack" />
<Student Name="Jill" />
<Class Name="English 101" />
<Class Name="Math 101" />
</School>
Вариант В
<School>
<Students>
<Student Name="Jack" />
<Student Name="Jill" />
</Students>
<Classes>
<Class Name="English 101" />
<Class Name="Math 101" />
</Classes>
</School>
Решение
Я не специалист по XML, но я нахожу вариант B более удобочитаемым для человека, и я думаю, что он такой же машиночитаемый, как и вариант A.Я считаю, что XML предназначен для чтения как человеком, так и машиной, поэтому я бы сам выбрал вариант B.
Я только что понял кое-что еще после поста Райана Фарли.Если раздел Students или Classes становится слишком большим и его необходимо переместить в другой XML-файл, кажется, было бы проще скопировать узел и создать новый XML-файл из этого узла с опцией B.
Другие советы
Определенно - Вариант B.
Я бы не стал смешивать students и классы в XML точно так же, как я бы не стал смешивать students и классы в одной таблице базы данных.
Еще одной веской причиной для использования варианта B является проверка на ошибки.Если исходный файл изменен вне XML-приложения или если XSD-схема не применяется, может возникнуть ситуация, когда у вас неравномерное количество учащихся и классов.
По крайней мере, если у вас есть учащиеся и классы, сгруппированные вместе, вы легко сможете определить, является ли каждая запись полной, независимо от любой другой записи.
Вариант В, абсолютно.Когда существует логическая группировка похожих элементов, у нее должен быть родительский элемент.Таким образом, моему анализатору не придется просматривать все 500 записей учащихся, проверяя, нет ли в них смешанных записей классов.