c# - 如何合并 XML 文件的特定部分
问题描述
我有一个从 Excel 导出的 XML 文件,以提供我需要的东西。获取 XML 中的数据是一次性操作,除了一个问题之外,它已经完全满足了我的需求。
XML 文件包含数千个任务条目,每个任务都列出了执行该任务所需的各种用品。每个任务应该只出现一次,尽管它显然可以在其中列出许多供应品。
问题是,如果从 Excel 中遇到它,如果一个任务需要 3 个耗材,它会生成 3 次任务,每个任务只包含一个耗材。
我因此需要将具有共同任务的耗材合并为一个任务。这将是一次性操作,从这里开始,数据将在 XML 中进行管理。
下面的示例 XML:
<tasks>
<task>
<taskCode>123456</taskCode>
<taskName>Mow lawn</taskName>
<supplies>
<tool>
<id>Edge trimmer</id>
</tool>
</supplies>
</task>
<task>
<taskCode>123456</taskCode>
<taskName>Mow lawn</taskName>
<supplies>
<tool>
<id>Lawn mover</id>
</tool>
</supplies>
</task>
<task>
<taskCode>45678</taskCode>
<taskName>Paint wall</taskName>
<supplies>
<tool>
<id>Paint brush</id>
</tool>
</supplies>
</task>
</tasks>
在这个例子中,我需要合并前两个任务,以便我们最终得到:
<tasks>
<task>
<taskCode>123456</taskCode>
<taskName>Mow lawn</taskName>
<supplies>
<tool>
<id>Edge trimmer</id>
<id>Lawn mover</id>
</tool>
</supplies>
</task>
<task>
<taskCode>45678</taskCode>
<taskName>Paint wall</taskName>
<supplies>
<tool>
<id>Paint brush</id>
</tool>
</supplies>
</task>
</tasks>
解决方案
为原始映射创建类,为新映射创建类,然后反序列化为原始类,创建到新类的映射,并将其序列化为新格式。
推荐阅读
- javascript - 光滑的滑块中心模式
- c# - 如何显示带有后台工作人员实际进度百分比的进度条?
- javascript - Angular如何通过传递属性名称来动态添加属性
- java - war文件如何在docker容器上的tomcat中创建目录
- vba - 如果值存在于数据验证列表中,则粘贴到数据验证中
- javascript - 警告:数组或迭代器中的每个孩子都应该有一个唯一的“key”道具。密钥已经存在
- ios - 客户端可以发布使用我的开发人员门户证书创建的 .ipa 二进制文件吗?
- vue.js - 使用 Vue 模板标签输出 html,但没有嵌套元素
- sapui5 - sap.m.PlanningCalendar 希望根据开始日期和结束日期禁用日期
- php - Wordpress 页面/帖子编辑页面不断加载