我正在为一些自定义日志记录设计XML。记录器中有一个部分,开发人员可以在其中添加名称 - 值对。我正在尝试决定XML的外观。我正在尝试确定名称值对的名称部分是否应该是属性。 (我认同)。这是我到目前为止所做的:
<ExtendedProperties>
<ExtendedProperty name="Name1">Value1</ExtendedProperty>
<ExtendedProperty name="Name2">Value2</ExtendedProperty>
</ExtendedProperties
另一个选项(我知道)是将值名称设为节点名称:
<Name1>Value1</Name1>
<Name2>Value2</Name2>
我更喜欢第一种方法(基于属性),因为我可以使用XSD更轻松地描述文档,我可以看到如何使用xpath或xquery来访问“ExtendedProperty”类型的所有元素。 (可用的名称不是预定义的 - 它们可以是任何名称。)
但是,我不会花太多时间来开发XML模式。那对你们看起来是对的吗?还有什么我可能想要考虑的吗?
答案 0 :(得分:2)
未预定义可用名称 - 他们可以是任何东西。
这使得无法使用第二种形式(使用xml-schema) - 因为您需要使用该方法知道所有有效名称
答案 1 :(得分:0)
如果您要使用键值对元素集合,那么您的第一个选择是可行的方式。
在这种情况下,您的元素是集合中项目类型的名称...您的属性是键...而值是值。
例如:
<StringCollection>
<String name="stringOne">Something</String>
<String name="stringTwo">Something else</String>
</StringCollection>
你的第二种方式是一组不相关的非相关元素......不是你想要的。
答案 2 :(得分:0)
看起来不错。您还可以(如果值很简单)包括对缩写形式的支持&lt; ExtendedProperty name =“name”value =“value”/&gt;。这就是在Spring配置中完成的例子