1

異なる SWIFT メッセージを含む 2 つの SWIFT ファイルを比較します。SWIFT メッセージを比較し、それらの正確な違いを示すライブラリはありますか?

次のような 2 つの SWIFT メッセージがあります。

{1:ABC}{2:DEF}{3:{108:valid}} 
{4::16R:GENL:20C::CORP//0000000519765434:20C::SEME//525200100000002:16S-} 
{1:ABC}{2:DEF}{3:{108:valid}} 
{4::16R:GENL:20C::CORP//0000000519765434:20C::SEME//528200100000009:16S-}

{1:ABC}{2:DEF}{3:{108:valid}} 
{4::16R:GENL:20C::CORP//0000000519765434:20C::SEME//610300100000001:16S-} 
{1:ABC}{2:DEF}{3:{108:valid}} 
{4::16R:GENL:20C::CORP//0000000519765434:20C::SEME//528200100000009:16S-}

これら 2 つの SWIFT メッセージを比較するにはどうすればよいですか?

編集済み: 次の手順を使用してレコードを比較しましたが、値の比較に行き詰まりました:

IConversionService ics = new ConversionService();
        SwiftMessage sm1 = ics.getMessageFromFIN(source);
        SwiftMessage sm2 = ics.getMessageFromFIN(target);

        SwiftBlock4 source_block4 = sm1.getBlock4();
        SwiftBlock4 target_block4 = sm2.getBlock4();

        List<SwiftTagListBlock> source_tagListBlock = source_block4.getSubBlocks("16R", "16S");
        List<SwiftTagListBlock> target_tagListBlock = target_block4.getSubBlocks("16R", "16S");

        //SetMultimap<String, String> source_multimap1 = HashMultimap.create();

        ListMultimap<String, String> source_multimap = ArrayListMultimap.create();
        ListMultimap<String, String> target_multimap = ArrayListMultimap.create();

        for (SwiftTagListBlock s : source_tagListBlock) {
            Iterator<Tag> sourcetag_iterator = s.tagIterator();

            while (sourcetag_iterator.hasNext()) {
                Tag tag = (Tag) sourcetag_iterator.next();
                source_multimap.put(tag.getName(), tag.getValue());
            }
        }
        for (SwiftTagListBlock t : target_tagListBlock) {
            Iterator<Tag> targettag_iterator = t.tagIterator();

            while (targettag_iterator.hasNext()) {
                Tag tag = (Tag) targettag_iterator.next();
                target_multimap.put(tag.getName(), tag.getValue());
            }
        }

これで、マルチマップにはキーと値のペアの単一のキーと複数の値が含まれます。レコードを次のように表示したい:

if(source_multimap.get(key).equals(target_multimap.get(key)))次に、両方のマルチマップの値を比較し、マルチマップと異なる値を出力します。

4

1 に答える 1

-1

妻パーサーの依存関係に prowidesoftware を使用できます。これを使用すると、mt メッセージのすべてのブロックと各ブロックの各フィールドを読み取ることができます。すべてのものを比較できます。

于 2016-05-04T12:40:24.470 に答える