使用元素节点的XML示例:
<?xml version="1.0" encoding="utf-8"?>
<users>
<user>
<name>David Smith</name>
<phone>0441 234443</phone>
<email>dave.s33@domain.com</email>
<addresses>
<address>
<street>1 Some Street</street>
<town>Toy Town</town>
<country>UK</country>
</address>
<address>
<street>5 New Street</street>
<town>Lego City</town>
<country>US</country>
</address>
</addresses>
</user>
</users>
使用属性的示例XML:
<?xml version="1.0" encoding="utf-8"?>
<users>
<user name="David Smith" phone="0441 234443" email="dave.s33@domain.com">
<addresses>
<address street="1 Some Street" town="Toy Town" country="UK" />
<address street="5 New Street" town="Lego City" country="US" />
</addresses>
</user>
</users>
我需要根据关系数据库中的数据构建XML文件,并且无法判断我是否应该使用属性或元素。
构建XML文件时的最佳做法是什么?
答案 0 :(得分:5)
我读过的更好的文章之一是“Principles of XML design: When to use elements versus attributes”,它并不试图给你一个彻头彻尾的答案,但确实提供了一些好的思考和示例。
我建议文章中的建议倾向于你的第一个设计;您可能有兴趣阅读有关代表名称的部分。
答案 1 :(得分:3)
为了帮助您做出选择,您需要了解元素和属性之间的以下差异:
答案 2 :(得分:1)
我会考虑以下语法:
<?xml version="1.0" encoding="utf-8"?>
<users>
<user>
<name first-name="David" last-name="Smith" />
<phone home-phone="0441 234443" />
<email private-email="dave.s33@domain.com" />
<addresses>
<address street="1 Some Street" town="Toy Town" country="UK" />
<address street="5 New Street" town="Lego City" country="US" />
</addresses>
</user>
</users>
我认为如果为可以重复的东西选择元素并且可以有子元素,那么看起来会更好看,而在其他情况下我个人会使用属性,因为它们可以节省大量的内存空间。正如xdib团队上面所说:
元素可能没有两个属性 同名。特别是,如果 你使用属性,你不能分配 两个手机属性给用户。
这就是为什么我喜欢上面的语法。我已经决定使用元素作为名称,但我有足够的选项作为属性的姓氏,我认为在这种情况下属性就足够了,因为没有更多的东西应该嵌套在它们下面。您可以拥有多个地址,但每个地址可以有一个街道和一个城镇。这就是我选择的方式。
答案 3 :(得分:0)
我只使用属性ID(在这种情况下我只将国家/地区放入属性中),当你有一些文本时它更好的元素+ CDATA(如果你确定你的文本中永远不会有特殊的字符)你可以省略cdata)。
答案 4 :(得分:-2)
我更喜欢在子元素上使用属性。