3

我正在为我当前的用例设计 XML 文档。我的用例是-

给定一个 id,我可以有 check-score 和 Talent-score 以及类别数。每个类别都会有 category-id、check-score 和 Talent-score。

所以假设如果我有两个 id,那么上面的数据将在两个 id 中。

例如,下面是我基于单个 id 创建的 XML-

<?xml version="1.0" encoding="UTF-8" ?>
    <id>0</site-id>
    <check-score>0.5</check-score>
    <talent-score>0.2</talent-score>
    <categories>
        <category-id>123</category-id>
        <check-score>0.5</check-score>
        <talent-score>0.2</talent-score>
    </categories>
    <categories>
        <category-id>321</category-id>
        <check-score>0.2</check-score>
        <talent-score>0.4</talent-score>
    </categories>

如果我有另一个id具有 value as1和与之相关的相应事物会发生什么id。意思是,我如何在上面的示例中表示第二个 id 和其他与之相关的组件?如果我有两个身份证,我应该这样做吗?

<?xml version="1.0" encoding="UTF-8" ?>
    <id>0</site-id>
    <check-score>0.5</check-score>
    <talent-score>0.2</talent-score>
    <categories>
        <category-id>123</category-id>
        <check-score>0.5</check-score>
        <talent-score>0.2</talent-score>
    </categories>
    <categories>
        <category-id>321</category-id>
        <check-score>0.2</check-score>
        <talent-score>0.4</talent-score>
    </categories>

    <id>1</site-id>
    <check-score>0.2</check-score>
    <talent-score>0.3</talent-score>
    <categories>
        <category-id>289</category-id>
        <check-score>0.3</check-score>
        <talent-score>0.7</talent-score>
    </categories>
    <categories>
        <category-id>987</category-id>
        <check-score>0.1</check-score>
        <talent-score>0.5</talent-score>
    </categories>

并且有可能,我可以有多个 id,所以我不确定为上述用例编写 XML 的正确方法是什么。

谁可以帮我这个事?

4

1 回答 1

1

我遵循 XML 中“使用容器进行未绑定的多重性”的规则。

这通常更易于使用,在模式中表达更清晰,并且全面一致且易于处理和扩展。此外,使用自动序列化/类型映射器很好地支持使用这样的方法。如上面第二个示例所示,为此类结构化数据创建混合模式标记将导致混乱,需要特殊处理才能处理。

例如,要为多重性使用容器:

<someRelevantRootElement>
  <sites>
    <site site-id="0">
      <!-- not sure what scores are doing there -->
      <categories>
        <category category-id="123">
          <scores check="0.5" talent="0.2" />
        </category>
        <category category-id="..">
          <!-- .. -->
        </category>
        <!-- more categories? -->
      </categories>
    </site>
    <site side-id="..">
      <!-- .. -->
    </site>
    <!-- more sites? -->
  </sites>
</someRelevantRootElement>

另请注意,我将一些元素转换为属性。将元素用于“id”几乎总是错误的,因为 id描述了某些信息的一个方面(阅读:元素)。

当然,分数可能是容器,类别(id)只是此类分数信息(元素)的(属性)的一个方面。

在任何情况下,我都强烈建议使用容器来实现无界多重性。它使生活更轻松。

于 2013-09-14T18:51:46.883 回答