如何设计在xml中存储复杂对象设置

时间:2009-09-21 17:55:14

标签: xml

我试图在对象本身上存储每个对象状态的自定义设置,但我不知道如何以面向对象的方式执行此操作。所以:

xml文件中的一个部分是:

<ObjectType>

可以是Blur, Sharpen, Smooth,等。

但请说Blur只有在类型为Blur时才会存储其他属性,例如:

<BlurType>Gaussian, Smart, etc</BlurType>

此外,我不确定是否应将这些存储为:

<a>something</a>

<a>Type=something</a>

2 个答案:

答案 0 :(得分:5)

绝不以XML格式存储分隔数据。


也就是说,永远不会有一个包含逗号分隔值列表或等号分隔值的元素,或类似的东西。 XML为您提供了创建列表的机制,如果您计划使用它,则不应重新发明。

存储像你正在谈论的列表的“XML方式”是这样的:

<BlurType>
  <option>Gaussian</option>
  <option>Smart</option>
  ...
</BlurType>

或者,如果您有一组可以打开或关闭的特定值,

<BlurType>
  <Gaussian>true</Gaussian>
  <Smart>true</Smart>
  ...
</BlurType>

第二种方法可以比XSD更严格地验证XSD。首先是更灵活。您不希望将type=something之类的内容存储在XML中的任何位置。两者之间的中间地带可以这样工作:

<BlurType>
  <option name="Gaussian">true</option>
  <option name="Smart">true</option>
  ...
</BlurType>

这提供了灵活性,同时您可以针对XSDDTD验证name属性和option元素的值。

答案 1 :(得分:1)

无论

<ObjectType name="Blur" type="Gaussian" />

<ObjectType>
    <Name>Blur</Name>
    <Type>Gaussian</Type>
</ObjectType>

将是我的前两个选择。