首页 > 解决方案 > 如何合并 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>

标签: c#xmlxslt

解决方案


为原始映射创建类,为新映射创建类,然后反序列化为原始类,创建到新类的映射,并将其序列化为新格式。


推荐阅读