2010-03-01 4 views
3

У меня есть база данных, которая содержит страны и города. Я хочу экспортировать эту информацию в XML-документ, но задаюсь вопросом, как его структурировать.help with structuring xml document

я должен сделать это следующим образом:

<country> 
<name>Canada</name> 
<city> 
    <name>Toronto</name> 
    <population>1423200</population> 
</city> 
<city> 
    <name>Ottawa</name> 
    <population>1423200</population> 
</city> 
</country> 

или как это:

<country> 
    <name>Canada</name> 
    <cities> 
    <city> 
     <name>Toronto</name> 
     <population>1423200</population> 
    </city> 
    <city> 
     <name>Ottawa</name> 
     <population>1423200</population> 
    </city> 
    </cities> 
</country> 

или как это:

<entity> 
<country>Canada</country> 
<city>Ottawa</city> 
<city_population>1423200</city_population> 
</entity> 
<entity> 
<country>Canada</country> 
<city>Toronto</city> 
<city_population>1423200</city_population> 
</entity> 

каковы плюсы и минусы с каждым из них ? есть ли другой способ структурирования?

, который из них лучше всего подходит для будущих изменений (добавление данных).

мой первый раз, чтобы структура в xml, так что было бы здорово с отзывами/подсказками!

ответ

3

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

Плюс это больше мнемонизирует ваши объекты. Например, неясно, какие «сущности» остаются в вашем втором решении.

Плюс у него меньше повторений данных, так как вы должны указать страну = canada в каждой организации. Тем не менее, я бы сделал вам первое решение. Поместите элемент Country в коллекцию:

<countries> 
<country> 
<name>Canada</name> 
<cities> 
<city> 
    <name>Toronto</name> 
    <population>1423200</population> 
</city> 
<city> 
    <name>Ottawa</name> 
    <population>1423200</population> 
</city> 
</cities> 
</country> 
</countries> 

Это поможет вам расширить ваши данные.

EDIT: В общем случае, когда у вас есть повторение объектов, лучше обернуть их в элемент «коллекция». Это хорошая практика, поскольку вы можете добавлять свойства в саму коллекцию и некоторые другие преимущества - вы не будете перебирать элементы родителей и выбирать, какой из них принадлежит к одному типу.

+0

поэтому u означает первый? – ajsie

+0

Определенно первый лучше! – anthares

+0

ОК спасибо за изменение. но у меня будет одна страна в каждом файле, чтобы в этом случае не было необходимости. – ajsie