我是处理XML的新手,我必须存储键/值对。有这样做的首选方式吗?以下是我可以提出的一些可能性:
方式1
<item key="k1" value="val1" />
<item key="k2" value="val2" />
<item key="k3" value="val3" />
方式2
<item><key>k1</key><value>val1</value></item>
<item><key>k2</key><value>val2</value></item>
<item><key>k3</key><value>val3</value></item>
方式3
<key name="k1">val1</key>
<key name="k2">val2</key>
<key name="k3">val3</key>
感谢。
更新 与此同时,我发现了这个: http://www.ibm.com/developerworks/xml/library/x-eleatt.html
答案 0 :(得分:9)
保存XML文件的默认方式是方式2,因为许多XML文件都使用该标记。
但就个人而言,我更倾向于使用Way 1进行标记而不是其他。
它在可读性和行数方面产生了较小的文件,可以很好地概述另一个更大元素中包含的项目,而且您不必为文件中使用的每个项目创建一个终端元素标记(除了容器项目。)
但是在当天,你会更喜欢并且感到满意。
答案 1 :(得分:1)
还有一个替代方案,让我觉得更符合XML的精神(假设您的密钥是有效的QNames,而且您的值不包含任何会导致格式不正确的XML):
<k1>val1</k1>
<k2>val2</k2>
<k3>val3</k3>
答案 2 :(得分:0)
Way 3 由“java properties”文件使用。这是它的DTD:
<!ELEMENT properties ( comment?, entry* ) >
<!ATTLIST properties version CDATA #FIXED "1.0">
<!ELEMENT comment (#PCDATA) >
<!ELEMENT entry (#PCDATA) >
<!ATTLIST entry key CDATA #REQUIRED>
答案 3 :(得分:0)
XML非常灵活。你可以选择你想要的任何东西。我会选择3.我认为3是最灵活的。
答案 4 :(得分:0)
最后我认为这是一个偏好问题,而不是最佳实践(除非有人能给我一个例子,说明为什么一个优于另一个)。我更喜欢使用方式3 和方式1 。
答案 5 :(得分:0)
您可以将字典用于此目的。
以下是一个示例:http://msdn.microsoft.com/en-us/library/xfhwa508.aspx
答案 6 :(得分:0)
只要密钥是有效的XML名称,并且值具有简单的文本表示,我就会这样做:
<map key1="value1" key2="value2" key3="value3".../>
因为根据定义,属性是名称映射到值的映射,其中映射的顺序无关紧要 - 就像地图/字典/哈希表一样。
有很多情况下你不能这样做 - 例如123
是有效密钥,或者值(或键)是序列化对象。实际上,如果值是序列化对象,则可以,只要您不介意它们将显示在属性值中并且所有标记都已转义。