我想做从 XML 到结合一些元素的文本的转换,但要避免输出中的重复。XML 会是这样的:
<A>
<B>
<param1>value0</param1>
<param2>value1</param2>
</B>
<B>
<param1>value2</param1>
<param2>value3</param2>
</B>
<C>
<param3>valueC1</param3>
<D>
<param4>value0</param4>
<param5>value4</param5>
</D>
<D>
<param4>value0</param4>
<param5>value5</param5>
</D>
<D>
<param4>value2</param4>
<param5>value6</param5>
</D>
</C>
<C>
<param3>valueC2</param3>
<D>
<param4>value0</param4>
<param5>value5</param5>
</D>
</C>
</A>
和输出:
OBJECT: param1=value0, param2=value1, param3=valueC1, param4=value0;
OBJECT: param1=value2, param2=value3, param3=valueC1, param4=value2;
OBJECT: param1=value0, param2=value1, param3=valueC2, param4=value0;
笔记:
- 对于每个 D 对象,使用 D.param4 = B.param1 查找与 B 对象的匹配项
- 如果有两个或多个 D 对象进入同一个 C 并与同一个 B 匹配,则只打印其中一个(在示例中,对第二个 D 对象不做任何事情,因为它会产生与第一个对象相同的行)
- 如果有两个 D 对象与相同的 B 匹配,但在不同的 C 中,则打印两者(输出示例中的第三行)
我寻找了一些类似的问题,但在同一案例中找不到任何问题。
我想这可以通过使用键来完成,但它太复杂了。
谢谢!
问候,艾尔。
PS:对不起我的英语。