Вопрос

Я создаю приложение, которое будет хранить иерархическую коллекцию элементов в 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 записей учащихся, проверяя, нет ли в них смешанных записей классов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top