XML元素是否应该分组父母?

时间:2009-12-16 19:27:12

标签: xml grouping convention

哪种惯例是首选的,为什么(包括一种优点和缺点)?

此:

<company>
    <employees>
        <employee />
        <employee />
        <employee />
    </employees>
    <buildings>
        <building />
        <building />
    </building>
</company>

或者这个:

<company>
    <employee />
    <employee />
    <employee />
    <building />
    <building />
</company>

5 个答案:

答案 0 :(得分:2)

通常,在编程中处理XML时,通常需要将其转换为程序可以使用的对象。大多数XML序列化程序都使用元素来表示父元素的属性。

当您在顶部示例中对它们进行分组时,序列化程序可以将其解释为单个集合或数组属性。在这种情况下,您将拥有Company,其Employees属性是Employee个对象的集合。

如果您采用第二种方式,最终会得到一个Company对象,其中包含名为“Employee”,“Employee2”,“Employee3”的属性或类似的东西。当你编程时,这不是一个好的对象设计。

答案 1 :(得分:1)

是否有可能附加到组中所有员工的属性或数据?我通常会选择第一个例子(分组元素),因为它可以让你自由

  1. 创建多个组
  2. 将数据附加到
  3. 它有点冗长,但为你带来了更大的灵活性。

答案 2 :(得分:1)

通过特定元素对集合进行显式表示没有语义上的原因。最后,两份文件具有相同的含义 - 它们代表着一家拥有所有员工和建筑物的公司。

然而,第一个例子提供了额外的好处:

  • 它更具可读性,可以从编辑器中概述。
  • 您可以创建更严格的架构
  • 序列化为强类型集合更容易
  • 您可以在集合元素上指定适用于
  • 内所有元素的属性

另一方面,第二个例子也有其自身的一些好处(虽然我确实发现这些至少可疑):

  • 不那么健谈/使用更少的内存
  • 通过非XML工具更容易处理

答案 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>

我会选择第一种格式。