【发布时间】:2021-05-28 19:05:24
【问题描述】:
我希望合并两个 XML 文件,类似于 What is the fastest way to combine two xml files into one
但我无法理解如何根据节点值(配置节点的域节点值)对它们进行分组和合并 我正在尝试使用 Linq,但它并没有让它变得更容易,即使是 group by 和 where 子句也在那里。
基本上我希望所有 Component 节点(允许重复)都列在同一个 Configuration 节点下,其中 Domain 名称节点值是相等。
换句话说,下面的例子: 结果 XML 有两个 Configuration 节点, 一个具有域:MyDom01 另一个是域:MyDom02 在每个配置下,我都有一个 Components 节点,其中列出了所有 Component。
这可能吗?
一个.XML
<System>
<Configurations>
<Configuration>
<Domain>MyDom01</Domain>
<Components>
<Component>
<Name>Memory</Name>
<Size>16</Size>
</Component>
<Component>
<Name>CPU</Name>
<Size>8</Size>
</Component>
</Components>
</Configuration>
<Configuration>
<Domain>MyDom01</Domain>
<Components>
<Component>
<Name>HDD</Name>
<Size>1</Size>
</Component>
</Components>
</Configuration>
<Configuration>
<Domain>MyDom02</Domain>
<Components>
<Component>
<Name>CPU</Name>
<Size>12</Size>
</Component>
</Components>
</Configuration>
</Configurations>
</System>
另一个.XML
<System>
<Configurations>
<Configuration>
<Domain>MyDom01</Domain>
<Components>
<Component>
<Name>Memory</Name>
<Size>128</Size>
</Component>
<Component>
<Name>CPU</Name>
<Size>32</Size>
</Component>
<Component>
<Name>CPU</Name>
<Size>32</Size>
</Component>
</Components>
</Configuration>
<Configuration>
<Domain>MyDom02</Domain>
<Components>
<Component>
<Name>Memory</Name>
<Size>32</Size>
</Component>
</Components>
</Configuration>
</Configurations>
</System>
合并的.XML:
<System>
<Configurations>
<Configuration>
<Domain>MyDom01</Domain>
<Components>
<Component>
<Name>Memory</Name>
<Size>16</Size>
</Component>
<Component>
<Name>CPU</Name>
<Size>8</Size>
</Component>
<Component>
<Name>HDD</Name>
<Size>1</Size>
</Component>
<Component>
<Name>Memory</Name>
<Size>128</Size>
</Component>
<Component>
<Name>CPU</Name>
<Size>32</Size>
</Component>
<Component>
<Name>CPU</Name>
<Size>32</Size>
</Component>
</Components>
</Configuration>
<Configuration>
<Domain>MyDom02</Domain>
<Components>
<Component>
<Name>CPU</Name>
<Size>12</Size>
</Component>
<Component>
<Name>Memory</Name>
<Size>32</Size>
</Component>
</Components>
</Configuration>
</Configurations>
</System>
【问题讨论】: