Мне интересно, каковы лучшие методы хранения реляционной структуры данных в XML. В частности, мне интересно узнать о лучших методах обеспечения порядка узлов. Например, скажем, у меня есть три объекта: School
, Course
и Student
, которые определены следующим образом:
class School
{
List<Course> Courses;
List<Student> Students;
}
class Course
{
string Number;
string Description;
}
class Student
{
string Name;
List<Course> EnrolledIn;
}
Я бы сохранил такую структуру данных в XML примерно так:
<School>
<Courses>
<Course Number="ENGL 101" Description="English I" />
<Course Number="CHEM 102" Description="General Inorganic Chemistry" />
<Course Number="MATH 103" Description="Trigonometry" />
</Courses>
<Students>
<Student Name="Jack">
<EnrolledIn>
<Course Number="CHEM 102" />
<Course Number="MATH 103" />
</EnrolledIn>
</Student>
<Student Name="Jill">
<EnrolledIn>
<Course Number="ENGL 101" />
<Course Number="MATH 103" />
</EnrolledIn>
</Student>
</Students>
</School>
С XML, упорядоченным таким образом, я могу сначала проанализировать Courses
. Затем, когда я анализирую Students
, я могу найти каждый Course
, указанный в EnrolledIn
(по Number
) в списке School.Courses
. Это даст мне ссылку на объект для добавления в список EnrolledIn
в Student
. Однако, если Students
предшествует до Courses
, такой поиск для получения ссылки на объект невозможен. (Поскольку School.Courses
еще не заселено.)
Так, каковы лучшие практики для хранения реляционных данных в XML?
- Должен ли я требовать, чтобы Courses
всегда предшествовал Students
?
- Должен ли я терпеть любое упорядочение и создавать объект-заглушку Course
всякий раз, когда сталкиваюсь с тем, кого еще не видел? (Будет расширено, когда определение Course
будет в конце концов достигнуто.)
- Есть ли какой-то другой способ, которым я должен сохранять / загружать свои объекты в / из XML? (В настоящее время я внедряю методы Save
и Load
для всех своих бизнес-объектов и делаю все это вручную, используя System.Xml.XmlDocument
и связанные с ним классы.)
Я привык работать с реляционными данными из SQL, но это мой первый опыт попытки сохранить нетривиальную структуру реляционных данных в XML. Будем весьма благодарны за любые советы, которые вы можете дать относительно того, как мне поступить.