2010-03-01 6 views
3

J'ai une base de données qui contient des pays et des villes. Je veux exporter cette information dans un document XML, mais je me demande comment la structurer.aide pour structurer le document XML

dois-je faire comme ceci:

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

ou comme ceci:

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

ou comme ceci:

<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> 

quels sont les avantages et les inconvénients avec chacun d'eux ? Y a-t-il une autre manière de structurer?

qui est le meilleur pour les changements futurs (en ajoutant des données).

ma première fois de structurer en xml, ce serait génial avec des retours/astuces!

Répondre

3

Vous devez structurer vos documents XML de la même manière que vous structurez votre classe dans le code. Donc, comme la population des villes est la propriété de la ville elle-même, elle devrait être l'enfant du nœud de la ville. J'irais pour la 2ème structure.

Plus c'est mnémotechnique à propos de vos objets. Par exemple, il n'est pas clair ce que «les entités» reste dans votre deuxième solution.

De plus, il y a moins de répétition de données, car vous devez indiquer le pays = canada dans chaque entité. Je voudrais faire un changement à votre première solution, cependant. Mettez l'élément Pays dans une collection:

<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> 

Il vous aidera à étendre plus tard vos données.

EDIT: En général, lorsque vous avez une répétition d'objets, il est préférable de les placer dans un élément 'collection'. C'est une bonne pratique car vous pouvez ajouter des propriétés dans la collection elle-même et d'autres avantages - vous n'aurez pas à parcourir les éléments des parents et à choisir lequel appartient au même type.

+0

Alors vous voulez dire le premier? – ajsie

+0

Certainement le premier est meilleur! – anthares

+0

ok merci pour le changement. mais je vais avoir un pays dans chaque fichier, ce qui ne sera pas nécessaire dans ce cas. – ajsie