2010-09-12 74 views
0

这不是一个技术问题。更多的是标准化的东西。我有一堆需要序列化为XML的业务对象。以最简单的形式,我得到的对象X包含Y类型的对象.Y被扩展到Y1,Y2,Y3。命名XML标记

我的问题是,我应该去:

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

或:

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

当然,第一种方式是更具可读性,这是我所想的去为。任何理由为什么这不好?我猜我是在意见后...;)

+2

缺乏关于您的问题的背景信息使得这个问题看起来像是永恒的“元素与属性”之谜的重复。如果这是你在思考的话,请看看这些问题:http://stackoverflow.com/questions/33746/ http://stackoverflow.com/questions/241819/ http://stackoverflow.com/questions/1455872/ http://stackoverflow.com/questions/1455872/ http://stackoverflow.com/questions/1096797/ http://stackoverflow.com/questions/3055413/ – jasso 2010-09-12 17:17:08

回答

0

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

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

2

我不认为有这样一个普遍问题的答案 - 你真的需要给出更具体的例子,你想要实现什么。格式不存在于真空中;预期的用法在这里也很重要(“表单遵循功能”)。

1

我尝试解释换句话说其他人已经写信给你。 您的问题包含的信息太少,无法回答。为什么?

在我看来,你的问题的主要问题是,你给我们太少关于你想要使用XML的主题的信息。 XML是一个元语言而不是一种语言。 XML只定义了一些简单的基本规则。例如XHTML,XML Schema或XQuery是基于XML的语言。我们如何能在那里比较?向您推荐使用某种语言的某种语言结构,以便在一般情况下为您提供任何建议。

可以给你一些具有XML元素和具有XML属性的限制。一些很好的链接,你可以在jasso的评论中找到你的问题。但这些信息并不能解决您的问题。

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

<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语言。

所以a 一般关于元语言的问题XML不能很好地回答。