Структура «базы данных» в файле XML - PullRequest
0 голосов
/ 29 мая 2020

Итак, я должен определить «базу данных» в документе xml, в котором должна быть школа, оценки, комнаты, курсы и студенты, а затем я должен написать несколько классов в C#, которые нужно получить и сохранить данные в файл xml с помощью десериализации и сериализации. Но проблема в том, что я не знаю, как мне структурировать файл XML, прямо сейчас мой файл выглядит так:

<?xml version="1.0" encoding="utf-8" ?>
<School>
   <Grades>

   </Grades>
   <Rooms>

   </Rooms>
   <Courses>

   </Courses>
   <Students>

   </Students>
</School>

Но мне было интересно, может ли это быть лучше:

<?xml version="1.0" encoding="utf-8" ?>
<School>
   <Grades>
      <Rooms>
         <Courses>
            <Students>

            </Students>
         </Courses>
      </Rooms>
   </Grades>
</School>

Или, может быть, есть какой-то третий способ, который я упускаю, любая помощь будет оценена

1 Ответ

0 голосов
/ 29 мая 2020

Этот вопрос основан на мнении. Итак, это только мое мнение:

Выберите первый макет и используйте атрибут @ID s для связи между ними.
Например:

<?xml version="1.0" encoding="utf-8" ?>
<School>
   <Grades>
     <Grade id="gr1">...</Grade>
   </Grades>
   <Rooms>
     <Room id="rm1">...</Room>    
   </Rooms>
   <Courses>
     <Course id="crs1">
       <RoomNr>rm1</RoomNr>  <!-- Referring to the Rooms/Room/@id rm1 -->
       ...
     </Course>
   </Courses>
   <Students>
     <Student id="1">
       <Course>crs1</Course> <!-- Referring to the Courses/Course/@id crs1 -->
       <Course>...</Course>
     </Student>
   </Students>
</School>

Этот макет легко запрашивать -able и изменение ссылок существенно не изменит макет.

Например (потому что вы пометили свой вопрос с помощью ):

  • Получение всех <Student> s может быть выполнено с помощью выражения XPath-1.0

    /School/Students/Student
    
  • Получение всех <Student> s, которые посещают определенный курс (например, crs1)

    /School/Students/Student[Course='crs1']
    

... и т. Д.

...