2008-08-22 3 views
4

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

Вариант 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

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


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

4

Определенно - Вариант B.

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

2

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

2

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

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