如何在 XML 中表示列表数据

2024-03-16

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

给定一个 id,我可以获得检查分数、天赋分数和类别数量。每个类别都会有类别ID、检查分数和天赋分数。

所以假设如果我有两个 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其值为1以及与之相关的相应事物id。意思是,我如何表示第二个 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 的正确方法是什么。

谁可以帮我这个事?


我遵循 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 几乎总是错误的正在描述一个方面一些信息(阅读:元素)。

当然,也有可能是这样的情况scores是容器,类别(id)只是一个的方面这种分数信息(元素)(的属性)。

无论如何,我强烈建议使用容器来实现无限制的多重性。它让生活更轻松。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 XML 中表示列表数据 的相关文章

随机推荐

  • 获取Android中虚拟键盘的高度

    如何获取Android中虚拟键盘的高度 是否可以 我尝试从主窗口获取它 但它给了我应用程序的完整高度 但我想得到键盘的高度 您无法获取键盘高度 但可以获取 View 的高度 这是您真正想要的 并且您将获得提供给当前视图的 onLayout
  • PL/SQL 在整个数据库中搜索字符串

    这不仅仅是一个问题 它还是一个信息共享帖子 我今天遇到一个情况我需要在应用程序的整个数据库中寻找一个刺痛 但不知道它属于哪个表 列 下面是我编写并用于帮助我提出建议的 PL SQL 块 希望它能帮助其他有类似需求的人 Declare i N
  • 如何远程访问Spring-boot JMX

    我知道 spring 自动公开 JMX beans 我能够使用 VisualVM 在本地访问它 但是在产品上我如何使用它的 JMX beans 远程连接到应用程序 是否有默认端口或者我应该另外定义什么 谢谢 射线 默认情况下 JMX 可在本
  • -m32 选项不适用于 gcc,但适用于 g++

    我试图在 x86 64 ubuntu 12 04 机器上编译 32 位目标的应用程序 我使用安装了所需的包 sudo apt get install gcc multilib g multilib libc6 i386 libc6 dev
  • 错误:安装 ruby​​-debug-ide

    事实上 我是 ruby on Rails 开发的新手 并不是说我无法在 aptana studio 3 上安装 gem install ruby debug ide gem install ruby debug ide Temporaril
  • 声纳:“关闭这个PreparedStatement”

    Why is 声纳Qube http docs sonarqube org 如果我在finally块中关闭它 Jenkins的插件会抱怨打开的语句 我需要在单独的函数中验证数据库连接 final String PING SELECT 1 f
  • Hamcrest Matchers 包含匹配器列表

    我正在尝试使用org hamcrest Matchers contains java util List gt http hamcrest org JavaHamcrest javadoc 1 3 org hamcrest Matchers
  • 以编程方式将 UILabels 和 UIImageViews 添加到 UIScrollView

    我知道这个问题在这里经常出现 但我似乎仍然无法让它发挥作用 我可能没有正确启动视图或其他 无论如何 我正在尝试以编程方式向 UIScrollView 添加多个标签和图像 这是我的 h 文件的代码 import
  • ggplot2 中缺少功能区

    我似乎在 ggplot2 中设置功能区显示时遇到问题 这是一个组成的数据集 Estimate lt c 100 125 150 175 GlobalDFData lt data frame Estimate Upper Estimate 2
  • JavaScript 大括号参数作为函数参数[重复]

    这个问题在这里已经有答案了 我对 javascript 不太熟悉 并且有一个关于函数参数周围使用大括号的问题 因为它不是 JSON 结构 我正在学习核js 我找到了一些代码作为示例 但我不太明白 为什么 产品 在大括号中 addToCart
  • 串行执行单元测试(而不是并行)

    我正在尝试对我编写的 WCF 主机管理引擎进行单元测试 该引擎基本上根据配置动态创建 ServiceHost 实例 这使我们能够动态地重新配置哪些服务可用 而无需在添加新服务或删除旧服务时关闭所有服务并重新启动它们 然而 由于 Servic
  • GCC Linker:如何在输出部分生成每个文件贡献的报告

    最近我在尝试链接我的程序时遇到了一个问题 它报告 text无法放入指定的内存区域 显然 源代码变得太大而无法在有限的内存区域中链接 我现在要做的是分析哪个文件对 text 部分贡献最大 以便进行后续代码优化 我尝试了很多方法但没有成功 nm
  • 飞镖向下转型

    我需要在 dart 中进行向下转换 例如可以从Object to int 但我无法用我自己的课程来做到这一点 难道我做错了什么 或者正确的方法是怎样做的 class Person final String name final int ag
  • 我如何模拟 JodaTime 实际日期?

    我想测试一下这个方法 public FirmOrder findActiveByModelColor ModelColor modelColor Query query em createQuery FROM FirmOrder fo WH
  • 将 bootstrap select2 与 JqGrid 表单一起使用

    我正在尝试使用 jqgrid 形式实现 bootstrap select2 但似乎可以正确执行 在 jqgrid 声明的 colmodel 上我有 name staff index staff width 31 formoptions el
  • SoapUI 更改端点地址

    我想更改端点地址 但它给了我定义的值 我的意思是 只有一个值 我尝试在那里写 但它不起作用 它不可编辑 我怎样才能改变它 查看请求窗口并展开包含端点地址的选择框 你应该看到这样的东西 edit current add new endpoin
  • xml 模式中是否有任何方法可以让 xml 元素中的属性始终大于另一个属性?

    这里是xml
  • 发送器停止后让接收器继续运行

    我正在使用一个基于 Google 的简单接收器CastHelloText 示例应用程序 https github com googlecast CastHelloText chrome 当发送者断开连接时 我想允许接收者继续显示 我认为这可
  • Python 网络服务

    我正在做类似于 Ubuntu Landscape 的服务器 客户端应用程序 http www canonical com enterprise services ubuntu advantage landscape http www can
  • 如何在 XML 中表示列表数据

    我正在为我当前的用例设计 XML 文档 我的用例是 给定一个 id 我可以获得检查分数 天赋分数和类别数量 每个类别都会有类别ID 检查分数和天赋分数 所以假设如果我有两个 id 那么上面的数据将存在于两个 id 中 例如 下面是我基于单个