当前位置: 首页 > 知识库问答 >
问题:

用C#组织XML结果列表

叶景龙
2023-03-14

我有一个问题,如何组织我的食物清单,这是一个终结点的结果,我已经创建。问题是:

这是我班上的食物。。。你可以看到它有一张我以后需要的营养素清单

public class Food
{
    public int ID { get; set; }
    public string FoodID { get; set; }
    public string FoodName { get; set; }
    public List <Nutrient> Nutrients { get; set; }

}


public class Nutrient
{
    public string NutrientName { get; set; }
    public decimal NutrientValue { get; set; }
}

这是我当前返回的xml:

<Food>
<FoodID>9003</FoodID>
<FoodName>Apples, raw, with skin</FoodName>
<ID>0</ID>
<Nutrient>Protein</Nutrient>
<NutrientValue>0.260</NutrientValue>
</Food>

<Food>
<FoodID>9003</FoodID>
<FoodName>Apples, raw, with skin</FoodName>
<ID>0</ID>
<Nutrient>Total lipid (fat)</Nutrient>
<NutrientValue>0.170</NutrientValue>
</Food>

<Food>
<FoodID>9003</FoodID>
<FoodName>Apples, raw, with skin</FoodName>
<ID>0</ID>
<Nutrient>Carbohydrate</Nutrient>
<NutrientValue>13.810</NutrientValue>
</Food>

我想做的是这样的事情:

<Food>
<FoodID>9003</FoodID>
<FoodName>Apples, raw, with skin</FoodName>
<ID>0</ID>
<Nutrient>
<NutrientName>Protein</Nutrient>
<NutrientValue>0.260</NutrientValue>
<NutrientName>Total lipid (fat)</Nutrient>
<NutrientValue>0.170</NutrientValue>
<NutrientName>Carbohydrate</Nutrient>
<NutrientValue>13.810</NutrientValue>
</Nutrient>
</Food>

基本上,我想按ID排序,这样属于同一个食物的营养素就会在一个列表中保持在一起。

知道我怎样才能达到这个结果吗?

谢谢!

共有1个答案

秦鸿羽
2023-03-14

当您必须依赖DataContract序列化(WCF)时,可以执行如下操作:

[DataContract]
public class Food
{
    [DataMember(Name = "Id")]
    public int ID { get; set; }

    [DataMember(Name = "Name")]
    public string Name { get; set; }

    [DataMember(Name ="Nutrients")]
    public List<Nutrient> Nutrients { get; set; }
}

[DataContract(Name = "Nutrient")]
public class Nutrient
{
    [DataMember(Name = "Name")]
    public string Name { get; set; }

    [DataMember(Name = "Value")]
    public decimal Value { get; set; }
}

这应该会给您一个如下所示的XML:

<Food>
  <Id>9003</Id>
  <Name>Apples, raw with skin</Name>
  <Nutrients>
    <Nutrient>
      <Name>Protein</Name>
      <Value>0.260</Value>
    </Nutrient>
    <Nutrient>
      <Name>Total lipid (fat)</Name>
      <Value>0.170</Value>
    </Nutrient>
    <Nutrient>
      <Name>Carbohydrate</Name>
      <Value>13.810</Value>
    </Nutrient>
  </Nutrients>
</Food>

注意:对于数据协定序列化,您不能使用XML属性。基本上,它应该是非常普通的XML,所有元素都按固定顺序排列。

 类似资料:
  • 我目前有以下文件。 http://www.cse.unsw.edu.au/~cs9321/14s1/assignments/musicDb.xml 我的类。 } 我在另一个类中创建了一个对象并调用,但我一直收到上述错误。 有人知道问题出在哪里吗? 谢谢你的帮助。

  • 本书分为三个主要部分,每部分包含关于一个特定领域的库,不过肯定也有一些重叠的地方。这种分类可以让你更容易地找到与你的任务相关的信息,也使得阅读本书时可以更方便地找到相关的主题。大多数情况下,每章讨论一个单独的库,但也有时会一章里讨论一小组的库。 排版及编码的风格尽量保持简单。在这方面有很多好的方法,我只是挑选了一种我认为大多数人会习惯的方式,这样可以更容易传递所要的信息。另外,本书的代码风格会通过

  • 主要内容:GWT Google Charts 组织结构图 配置,GWT Google Charts 组织结构图 示例以下是组织结构图的示例。 我们已经在《GWT Google Charts 入门程序》章节中看到了用于绘制图表的基本步骤。现在,让我们看一个组织结构图的例子。 GWT Google Charts 组织结构图 配置 我们使用OrgChart类来显示组织结构图。 GWT Google Charts 组织结构图 示例 输出结果为:

  • freeRTOS为每个支持的处理器分支都提供了一个提前配置好的,包含必要的源代码及头文件的示例工程。强烈推荐以这些示例工程为基础创建用户自己的应用。这篇文档就是帮助如何去找到和理解这些示例工程。 目录结构 从官网下载的freeRTOS源代码中包含很多已经移植好的例程,虽然文件数量很多,但是其实freeRTOS的内核文件仅仅只包含3个文件(软件定时器、事件组、协程都是可选功能)。 下载文件的根目录下

  • 本书结构 第二章首先会介绍一些Go的基本数据结构的实现,如slice和map。 第三章会介绍Go语言中的函数调用协议。 第四章分析runtime初始化过程。 第五章是goroutine的调度。 第六章分析Go语言中的内存管理。 第七章分析Go语言中一些高级数据结构的实现。 第八章是网络封装的实现 第九章讲cgo使用的一些技术 第十章是其它一些杂项 推荐的阅读方式 本书的写作基本上是按一个循序浅近的

  • 库被设计为模块化的,同时保持必须包括的头文件的数量以获得相当低的基本功能。 库的结构也故意保持简单,因为我们都喜欢简单。 以下是头文件组织的一般概述。 该库提供的所有标题的列表也可在左侧面板(标题标签下)看到,以备您需要更多详细信息。 boost/hana.hpp 这是库的主标题,其中包括库的整个公共接口。请注意,外部适配器,实验功能和实现细节不包括在这个头文件中,但是,因为其中一些需要额外的依赖

  • 我需要你帮我把冬眠映射成一对多我不知道为什么这是错的 另一类: 映射 另一个映射: Hibernate配置 这就是错误: 如果有人能帮我,我非常感激,谢谢!

  • 正如之前提到的,测试是一个复杂的概念,而且不同的开发者也采用不同的技术和组织。Rust 社区倾向于根据测试的两个主要分类来考虑问题:单元测试(unit tests)与 集成测试(integration tests)。单元测试倾向于更小而更专注,在隔离的环境中一次测试一个模块,也可以测试私有接口。集成测试对于你的库来说则完全是外部的。他们与其他用户采用相同的方式使用你的代码,他们只针对公有接口而且每