我有一个包含国家和城市的数据库。我想将此信息导出到xml文档,但想知道如何构建它。
我应该这样做:
<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中构建,所以反馈/提示会很棒!
答案 0 :(得分:3)
您应该以与在代码中构造类相同的方式构建XML文档。因此,城市人口是城市本身的财产 - 它应该是城市节点的孩子。我会去第二个结构。
此外,它对您的对象更为谨慎。例如,在第二个解决方案中,不清楚“实体”的用途。
此外,它的数据重复次数较少,因为您必须在每个实体中声明country = 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>
它可以帮助您延长数据的使用时间。
编辑:一般情况下,当您重复对象时,最好将它们包装在“集合”元素中。这是一个很好的做法,因为你可以在集合中添加属性和其他一些好处 - 你不会迭代到父元素并选择属于同一类型的元素。