哪种惯例是首选的,为什么(包括一种优点和缺点)?
此:
<company>
<employees>
<employee />
<employee />
<employee />
</employees>
<buildings>
<building />
<building />
</building>
</company>
或者这个:
<company>
<employee />
<employee />
<employee />
<building />
<building />
</company>
答案 0 :(得分:2)
通常,在编程中处理XML时,通常需要将其转换为程序可以使用的对象。大多数XML序列化程序都使用元素来表示父元素的属性。
当您在顶部示例中对它们进行分组时,序列化程序可以将其解释为单个集合或数组属性。在这种情况下,您将拥有Company
,其Employees
属性是Employee
个对象的集合。
如果您采用第二种方式,最终会得到一个Company
对象,其中包含名为“Employee
”,“Employee2
”,“Employee3
”的属性或类似的东西。当你编程时,这不是一个好的对象设计。
答案 1 :(得分:1)
是否有可能附加到组中所有员工的属性或数据?我通常会选择第一个例子(分组元素),因为它可以让你自由
它有点冗长,但为你带来了更大的灵活性。
答案 2 :(得分:1)
通过特定元素对集合进行显式表示没有语义上的原因。最后,两份文件具有相同的含义 - 它们代表着一家拥有所有员工和建筑物的公司。
然而,第一个例子提供了额外的好处:
另一方面,第二个例子也有其自身的一些好处(虽然我确实发现这些至少可疑):
答案 3 :(得分:0)
用问题回答你的问题...分组元素如何通过视觉和程序方式影响可读性?
分组方法(<employees>
和<buildings>
)更直观。
对于XPath查询,/company/employees/employee
与/company/employee
,非分组方法更为简洁。
所以,它可能是六分之一,另外六分之一。
答案 4 :(得分:0)
我会通过思考你所代表的数据来接近它。
在C#中,我看到了:
// Top Example:
public class Company
{
public Employee[] employees;
public Building[] buildings;
}
// Vs. Bottom Example:
public Things[] employeesAndBuildings;
逻辑上,建筑物和员工不是一回事。由于您的公司有多个建筑物和几个员工,因此您应该在逻辑上将这两个组分开。
第二个例子较短,根据读取格式的内容,读者可以轻松地将两个项目分开。但是为了便于阅读,当事情以不同的顺序进行时,格式会变得更难以理解:
<company>
<employee />
<building />
<employee />
<building />
<employee />
</company>
我会选择第一种格式。