0% found this document useful (0 votes)
4 views3 pages

Java XML Conversion for Payment Data

Java Code for Swift

Uploaded by

jcgope25
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views3 pages

Java XML Conversion for Payment Data

Java Code for Swift

Uploaded by

jcgope25
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

import [Link].

*;

public class MTParserString {

public static String convertToXml(String inputText) {


StringBuilder xml = new StringBuilder();
[Link]("<Document
xmlns=\"urn:iso:std:iso:20022:tech:xsd:pacs.008.001.08\">\n");
[Link](" <FIToFICstmrCdtTrf>\n");

// Process <GrpHdr>
Matcher grpHdrMatcher = [Link]("<GrpHdr>(.*?)</GrpHdr>",
[Link]).matcher(inputText);
if ([Link]()) {
String grpHdrBlock = [Link](1);
[Link](" <GrpHdr>\n");
convertKeyValueBlock(grpHdrBlock, xml, 6);
[Link](" </GrpHdr>\n");
}

// Process <CdtTrfTxInf>
Matcher txInfMatcher = [Link]("<CdtTrfTxInf>(.*?)</CdtTrfTxInf>",
[Link]).matcher(inputText);
if ([Link]()) {
String txBlock = [Link](1);
[Link](" <CdtTrfTxInf>\n");

String[] lines = [Link]("\\n");

for (String line : lines) {


line = [Link]();

if ([Link]("<") && [Link](">")) {


[Link](" ").append(line).append("\n");
} else if ([Link]("=")) {
String[] parts = [Link]("=", 2);

if ([Link] == 2) {
String key = parts[0].trim().replaceAll("\\s+", "").replace("\"", "");
String value = parts[1].trim().replace("\"", "");

if ([Link]("Ccy")) {
String[] kv = [Link]("Ccy");
if ([Link] == 2) {
[Link](" <").append(kv[0].trim())
.append(" Ccy=\"").append(kv[1].trim()).append("\">")
.append(value).append("</").append(kv[0].trim()).append(">\
n");
} else {
// fallback if Ccy format is weird
[Link](" <").append(key).append(">")
.append(value).append("</").append(key).append(">\n");
}
} else {
[Link](" <").append(key).append(">")
.append(value).append("</").append(key).append(">\n");
}
}
} else if (![Link]()) {
// optional: if line is not empty and not handled, output as comment or
skip
[Link](" <!-- Unrecognized line: ").append(line).append(" -->\n");
}
}

[Link](" </CdtTrfTxInf>\n");
}

[Link](" </FIToFICstmrCdtTrf>\n");
[Link]("</Document>\n");

return [Link]();
}

private static void convertKeyValueBlock(String block, StringBuilder xml, int


indent) {
String[] lines = [Link]("\\n");
String pad = " ".repeat(indent);

for (String line : lines) {


line = [Link]();
if ([Link]("=")) {
String[] parts = [Link]("=", 2);
String key = parts[0].trim().replaceAll("\\s+", "");
String value = parts[1].trim();
[Link](pad).append("<").append(key).append(">")
.append(value).append("</").append(key).append(">\n");
}
}
}

// Example usage
public static void main(String[] args) {
String inputText = """
<FIToFICstmrCdtTrf>
<GrpHdr>
MsgId = PACS8BIZMSGIDR01
CreDtTm = 9999-12-31T00:00:00+00:00
NbOfTxs = 1
SttlmMtd = INDA
</GrpHdr>

<CdtTrfTxInf>
<PmtId>
InstrId = PACS8BIZMSGIDR01
EndToEndId = PACS008ENDTOENDID-111
UETR = f1636d6e-1ed0-4b56-a7be-5706eb62ba9f
</PmtId>
IntrBkSttlmAmt Ccy="SGD" = 500000
IntrBkSttlmDt = 2020-08-05
ChrgBr = DEBT
<InstgAgt>
<FinInstnId>
BICFI = WPACAU2SXXX
BICFI = DBSSSGSGXXX
</FinInstnId>
</InstgAgt>
<Dbtr>
Nm = AUSTRALIAN SUBMARINE
<PstlAdr>
AdrLine = 2/275 KENT ST
AdrLine = 3/AU/SYDNEY
</PstlAdr>
</Dbtr>
<DbtrAcct>
<Id>
<Othr>
Id = ABC123
</Othr>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
BICFI = WPACAU2S
</FinInstnId>
</DbtrAgt>
<CdtrAgt>
<FinInstnId>
BICFI = UOVBSGSG
</FinInstnId>
</CdtrAgt>
<Cdtr>
Nm = ATLAS MARINE SERVICES PTE
<PstlAdr>
ADRLINE = 2/8 CHIA PING RD
AdrLine = 3/SG/SINGAPORE
</PstlAdr>
</Cdtr>
<CdtrAcct>
<Id>
<Othr>
Id = AMS852147657
</Othr>
</Id>
</CdtrAcct>
<RmtInf>
Ustrd = /ROC/PACS008ENDTOENDID-111
</RmtInf>
</CdtTrfTxInf>
</FIToFICstmrCdtTrf>
""";

String outputXml = convertToXml(inputText);


[Link](outputXml); // Print the result line by line
}
}

You might also like