命名XML标记

时间:2010-09-12 07:10:27

标签: xml xml-serialization

这不是技术问题。更多的标准化事物。我有一堆业务对象需要序列化为XML。在最简单的形式中,我得到了对象X,它持有Y型对象.Y被扩展为Y1,Y2,Y3。

我的问题是,我应该选择:

<X>
  <Y>
    <Y1 />
    <Y2 />
    <Y1 />
    <Y3 />
  </Y>
</X>

或:

<X>
  <Y Type="Y1" />
  <Y Type="Y2" />
</X>

当然,第一种方式更具可读性,这正是我想要的。这有什么不好的原因?我想我是在意见......;)

3 个答案:

答案 0 :(得分:2)

我认为这个一般性问题没有答案 - 你真的需要给出更具体的例子来说明你想要实现的目标。真空中不存在格式;预期用法确实很重要(“形式跟随功能”)。

答案 1 :(得分:1)

我试着解释其他人已经写给你的东西。 您的问题包含的信息太少而无法解答。为什么呢?

在我看来,您的问题中的主要问题是您向我们提供的关于您希望使用XML的主题的信息太少。 XML是元语言而不是语言。 XML仅定义了一些简单的基本规则。例如,XHTML,XML Schema或XQuery是基于XML的语言。我们怎么比较呢?向您推荐一种语言的某种语言结构的使用,以便在一般情况下为您提供任何建议更容易。

可以为您提供具有XML元素且具有XML属性的一般限制。您可以在 jasso 的评论中找到一些与您的问题相关的好链接。但是这些信息并不能解决你的问题。

答案就像“元素在你的情况下似乎更好”解决你的问题也不是真的。例如,您可以通过不同方式编写“Y扩展为Y1Y2Y3”的信息。例如

<Y1 base="Y" />
<Y2 base="Y" />
<Y3 base="Y" />

<class name="Y1" base="Y" />
<class name="Y2" base="Y" />
<class name="Y3" base="Y" />

或其他一些方式,而不是你在你的问题中写的。所有这些XML文档都是不同的 XML语言。问题不仅在于您拥有的信息,还在于您想要查看信息的哪一方。我们如何比较可以包含相同信息的不同“XML语言”?如果您在XML文件中写入一些信息,您可能希望稍后读取信息。依赖以后需要的信息,在哪种情况以何种顺序等等,以便比较不同的建议XML语言,你可以使用

关于元语言 XML的一般问题无法得到很好的解答。

答案 2 :(得分:0)

我认为这取决于您使用序列化数据的方式 - 是用于交换,临时存储,长期存储等。更重要的是,您是否需要从序列化中创建对象的实例?

如果它用于交换,那么我会说它的属性名称本身和它们持有的任何值都不重要,因为类型应该是属性。另一方面,如果这是出于存储目的,那么如果您需要基于序列化实例化对象并且可能使类型名称更好地用作元素,则类型名称可能同样重要。