«Правильный» формат XML / производительность глубины дерева

#xml #tree #depth

#xml #дерево #глубина

Вопрос:

Я создаю XML-файл для хранения расписания паромов для импорта в приложение Android и разработал три древовидные структуры XML, но ищу мнение, которое следует использовать, исходя из производительности и / или правильного формата XML. Три структуры приведены ниже, и в конце они будут импортированы в массив, который я буду искать в следующий раз.

Заранее благодарим вас за помощь.

Исправленное XML-дерево — лучше?

 <FerrySchedule>
    <Terminal name="St. George">
        <Schedule day="Monday">
            <DepartureTime>00:00:00</DepartureTime>
            <DepartureTime>01:00:00</DepartureTime>
        </Schedule>
        <Schedule day="TuesdayFriday">
            <DepartureTime>00:00:00</DepartureTime>
            <DepartureTime>00:30:00</DepartureTime>
        </Schedule>
    </Terminal>

    <Terminal name="Whitehall">
        <Schedule day="Monday">
            <DepartureTime>00:30:00</DepartureTime>
            <DepartureTime>01:30:00</DepartureTime>

        </Schedule>
        <Schedule day="TuesdayFriday">
            <DepartureTime>00:00:00</DepartureTime>
            <DepartureTime>00:30:00</DepartureTime>
        </Schedule>
    </Terminal>
</FerrySchedule>
  

XML-дерево 1:

 <FerrySchedule>
    <Monday>
        <StGeorge>
            <time>0000</time>
            <time>0100</time>
        </StGeorge>
    </Monday>
</FerrySchedule>
  

XML-дерево 2:

 <FerrySchedule>
    <Monday>
        <boat depart="StGeorge">0000</boat>
        <boat depart="StGeorge">0100</boat>
    </Monday>
</FerrySchedule>
  

XML-дерево 3:

 <FerrySchedule>
    <Monday>
        <boat>
            <depart>St. George</depart>
            <time>0000</time>
        </boat>
        <boat>
            <depart>St. George</depart>
            <time>0100</time>
        </boat>
    </Monday>
</FerrySchedule>
  

Ответ №1:

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

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

Мне не нравится внешний вид «Monday» и «StGeorge» в качестве имен элементов. Имена элементов в целом должны быть типами, а не экземплярами.

Я думаю, что я бы сгладил его:

 <FerrySchedule>
        <boat depart="StGeorge" time="00:00:00" days="Mon"/>
        <boat depart="StGeorge" time="01:00:00" days="Mon Wed Fri"/>
</FerrySchedule>
  

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

Включение секунд в значение времени кажется немного нелепым, но «разумно выбранный» набор типов данных XML Schema включает xs:time в формате hh: mm: ss и не включает ничего в формате hh: mm.

Комментарии:

1. Я добавил еще одну структуру, о которой говорил с другом. Просто интересно, что вы думаете об этом. Спасибо за ваше понимание XML, времени и атрибутов в сравнении с элементами, хотя это немного проясняет организацию.