【发布时间】:2019-07-29 19:24:06
【问题描述】:
我在解决客户对其 XML 转换的请求时遇到了一些麻烦。他们要求当他们收到重复的发票行时,他们希望自动将重复的值更改为发票行号序列中的下一个值,请参见下面的输入和预期输出。
输入:
<?xml version="1.0" encoding="UTF-8"?>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>3</NumeroLinea>
</DettaglioLinee>
</DatiBeniServizi>
预期输出:
<Invoice>
<InvoiceDetail>
<InvoiceLineNumber>1</InvoiceLineNumber>
</InvoiceDetail>
<InvoiceDetail>
<InvoiceLineNumber>4</InvoiceLineNumber>
</InvoiceDetail>
<InvoiceDetail>
<InvoiceLineNumber>2</InvoiceLineNumber>
</InvoiceDetail>
<InvoiceDetail>
<InvoiceLineNumber>3</InvoiceLineNumber>
</InvoiceDetail>
</Invoice>
我尝试分组,但我没有得到他们要求的结果,这听起来很容易,但我花了一整天的时间试图解决。
欢迎任何帮助,感谢您的时间!
【问题讨论】:
-
请解释它背后的逻辑是什么......你有1,1,2,3和输出1,4,2,3。例子不清楚。
-
抱歉,我会编辑问题。逻辑应该是:如果有重复的发票行号,则更改重复以下的顺序。因此,在示例案例中,您重复了 1,因此它对应于 4(最后一个发票行号 3 之后的那个)
-
是否所有重复的行都取到最后行号+1的值?还是需要为每个重复的行号增加值?
-
这听起来并不容易。为什么不简单地按顺序重新编号所有行? 那很容易。
-
大家好,感谢您的 cmets,它们可以带有任何数值,主要目标是不要在输出中重复。