XML Dom:存储键/值对

时间:2009-10-09 12:05:14

标签: xml

我是处理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

7 个答案:

答案 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是有效密钥,或者值(或键)是序列化对象。实际上,如果值是序列化对象,则可以,只要您不介意它们将显示在属性值中并且所有标记都已转义。