SQL生成PACS.008 XML时子查询引发命名空间重复问题求助
解决SQL生成PACS.008 XML时命名空间重复的问题
生成PACS.008格式XML文档时,添加默认命名空间后,子查询生成的元素会重复带上命名空间,预期仅根元素<Document>保留命名空间。
错误写法的核心问题
原SQL错误嵌套了<GrpHdr>元素,且子查询生成的XML片段未正确继承外层命名空间,导致每个子元素都重复声明命名空间,同时结构不符合PACS.008规范。
正确SQL实现
-- 声明消息数据变量 DECLARE @MsgId VARCHAR(50) = '123456789'; DECLARE @CreDtTm DATETIME = '2023-07-26T12:34:56'; DECLARE @NbOfTxs INT = 1; DECLARE @CtrlSum DECIMAL(18, 2) = 1000.00; DECLARE @InitgPtyNm VARCHAR(100) = 'Sender Company Name'; DECLARE @InstrId VARCHAR(50) = 'Payment123'; DECLARE @EndToEndId VARCHAR(50) = 'EndToEnd123'; DECLARE @Amt DECIMAL(18, 2) = 1000.00; DECLARE @Ccy VARCHAR(3) = 'EUR'; DECLARE @CdtrAgtBIC VARCHAR(11) = 'AAAABBBB'; DECLARE @CdtrNm VARCHAR(100) = 'Recipient Name'; -- 生成带正确命名空间的PACS.008 XML文档 ;WITH XMLNAMESPACES(DEFAULT 'urn:iso:std:iso:20022:tech:xsd:pacs.008.001.09') SELECT @MsgId AS 'MsgId', @CreDtTm AS 'CreDtTm', @NbOfTxs AS 'NbOfTxs', @CtrlSum AS 'CtrlSum', (SELECT @InitgPtyNm AS 'Nm' FOR XML PATH('InitgPty'), TYPE), (SELECT @InstrId AS 'InstrId', @EndToEndId AS 'EndToEndId' FOR XML PATH('PmtId'), TYPE), (SELECT @Amt AS 'InstdAmt', @Ccy AS '@Ccy' FOR XML PATH('Amt'), TYPE), (SELECT (SELECT @CdtrAgtBIC AS 'BIC' FOR XML PATH('FinInstnId'), TYPE) FOR XML PATH('CdtrAgt'), TYPE), (SELECT @CdtrNm AS 'Nm' FOR XML PATH('Cdtr'), TYPE) FOR XML PATH('GrpHdr'), ROOT('Document'), TYPE;
关键调整说明
- 移除主SELECT中
GrpHdr/前缀,避免生成嵌套多余的<GrpHdr>元素 - 子查询通过
TYPE关键字返回XML类型数据,自动继承外层的默认命名空间,无需重复声明 - 修正金额节点结构,将币种
Ccy作为<InstdAmt>的属性生成,符合PACS.008的标准格式
正确生成结果
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pacs.008.001.09"> <GrpHdr> <MsgId>123456789</MsgId> <CreDtTm>2023-07-26T12:34:56</CreDtTm> <NbOfTxs>1</NbOfTxs> <CtrlSum>1000.00</CtrlSum> <InitgPty> <Nm>Sender Company Name</Nm> </InitgPty> <PmtId> <InstrId>Payment123</InstrId> <EndToEndId>EndToEnd123</EndToEndId> </PmtId> <Amt> <InstdAmt Ccy="EUR">1000.00</InstdAmt> </Amt> <CdtrAgt> <FinInstnId> <BIC>AAAABBBB</BIC> </FinInstnId> </CdtrAgt> <Cdtr> <Nm>Recipient Name</Nm> </Cdtr> </GrpHdr> </Document>
内容的提问来源于stack exchange,提问作者codecoder
相关产品推荐
相关产品推荐

