【发布时间】:2022-01-08 15:46:16
【问题描述】:
我有以下由外部系统发送的源文件。
<?xml version="1.0" encoding="utf-8"?>
<root>
<remoteId>id-sent-by-sender</remoteId>
<payments>
<payment>
<amount>383700</amount>
<remoteId>unique-id-1</remoteId>
<beneficiary>
<accountNumber>CustomerAccount_1</accountNumber>
<country>fr</country>
<routingNumber>AAABBBBCCC</routingNumber>
<title>Dale's Shop</title>
<email>dale@shop.com</email>
</beneficiary>
<feeBearer>
<party>supplier</party>
<supplierFeePercent>1.00</supplierFeePercent>
</feeBearer>
<currency>eur</currency>
<dateDue>2021-07-21</dateDue>
<metaData>
<data>
<key>a-key</key>
<value>a value</value>
</data>
<data>
<key>another-key</key>
<value>another value</value>
</data>
</metaData>
<reference>
<row>invoice row 1</row>
</reference>
<reference>
<row>invoice row 2</row>
</reference>
<reference>
<row>invoice row 3</row>
</reference>
</payment>
<payment>
<amount>100000</amount>
<remoteId>unique-id-2</remoteId>
<beneficiary>
<accountNumber>CustomerAccount_2</accountNumber>
<country>gb</country>
<routingNumber>BBBKKKKSSS</routingNumber>
<title>Ramos Tacos</title>
</beneficiary>
<feeBearer>
<party>supplier</party>
<supplierFeePercent>1.00</supplierFeePercent>
</feeBearer>
<currency>eur</currency>
<reference>
<row>invoice row 1</row>
</reference>
<reference>
<row>invoice row 2</row>
</reference>
<reference>
<row>invoice row 3</row>
</reference>
</payment>
</payments>
</root>
我需要将文件更改为如下所示。
<?xml version="1.0" encoding="utf-8"?>
<root>
<remoteId>id-send-by-sender</remoteId>
<payments>
<payment>
<amount>383700</amount>
<remoteId>unique-id-1</remoteId>
<beneficiary>
<accountNumber>CustomerAccount_1</accountNumber>
<country>fr</country>
<routingNumber>AAABBBBCCC</routingNumber>
<title>Dale's Shop</title>
<email>dale@shop.com</email>
</beneficiary>
<feeBearer>
<party>supplier</party>
<supplierFeePercent>1.00</supplierFeePercent>
</feeBearer>
<currency>eur</currency>
<dateDue>2021-07-21</dateDue>
<metaData>
<data>
<key>a-key</key>
<value>a value</value>
</data>
<data>
<key>another-key</key>
<value>another value</value>
</data>
</metaData>
<reference>
<row>invoice row 1</row>
<row>invoice row 2</row>
<row>invoice row 3</row>
</reference>
</payment>
<payment>
<amount>100000</amount>
<beneficiary>
<accountNumber>CustomerAccount_2</accountNumber>
<country>gb</country>
<routingNumber>BBBKKKKSSS</routingNumber>
<title>Ramos Tacos</title>
</beneficiary>
<feeBearer>
<party>supplier</party>
<supplierFeePercent>1.00</supplierFeePercent>
</feeBearer>
<currency>eur</currency>
<reference>
<row>invoice row 1</row>
<row>invoice row 2</row>
<row>invoice row 3</row>
</reference>
<remoteId>unique-id-2</remoteId>
</payment>
</payments>
</root>
简而言之,这 2 个 XML 之间的区别在于,第一个 XML 有不止一次出现的元素 <reference>,我需要将其合并为一个出现,同时保持所有这些出现的子元素不变。
这可以使用 XSLT 完成吗?如果是,有人可以帮忙吗? 我在这方面很新手,当我搜索帖子时,不明白如何去做。
谢谢
【问题讨论】:
-
请就您在尝试完成此操作时遇到的困难提出一个具体问题。否则,看起来您只是在寻找某人为您编写代码。 --附言这是一项微不足道的任务;花一个小时或更少的时间学习 XSLT 教程,你就会知道如何做。