You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何消除OpenEdge Progress中XML输出重复的NAMESPACE-URI

问题:去除WRITE-XML生成XML中重复的命名空间声明

我使用带DATA-RELATION的TEMP-TABLE和WRITE-XML函数生成XML文件时,发现命名空间URI同时出现在文档头部和第一个数据标签<CstmrCdtTrfInitn>中:

xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<CstmrCdtTrfInitn
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">

期望仅在文档头部保留命名空间,第一个数据标签不再重复:

xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >

<CstmrCdtTrfInitn>  

当前数据集定义代码:

DEFINE DATASET Document NAMESPACE-URI "urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" FOR CstmrCdtTrfInitn, GrpHdr, InitgPty, Id, OrgId, Othr, Purp, PmtInf, PmtTpInf, SvcLvl,
                           ReqdExctnDt, LclInstrm, Dbtr, DbtrAcct, Id-DbtrAct, Othr-DbtrAct, DbtrAgt, FinInstnId, ClrSysMmbId, ClrSysId, PstlAdr-DbtrAgt, CdtTrfTxInf, PmtId, 
                           Amt, InstdAmt, CdtrAgt, FinInstnId-CR, ClrSysMmbId-CR, Cdtr, CdtrAcct, Id-CR,  PstlAdr,  PstlAdr-CR, PstlAdr-Cdtr, Othr-CI, Othr-CAgt, Id-Dbtr, 
                           OrgId-Dbtr, Othr-Dbtr, SchmeNm
    DATA-RELATION XML-1 FOR CstmrCdtTrfInitn, GrpHdr
                             RELATION-FIELDS(MsgId, MsgId)
                             NESTED  

解决方案

要解决命名空间重复声明的问题,按以下步骤操作:

  1. 移除顶层临时表的独立命名空间声明
    检查顶层临时表CstmrCdtTrfInitn的定义,如果它单独配置了NAMESPACE-URI属性,必须删除该配置。只需保留DATASET级别的NAMESPACE-URI定义即可,根元素会自动继承数据集的命名空间,无需重复声明。

  2. 调整WRITE-XML调用参数
    调用WRITE-XML时使用正确的参数组合,避免触发额外的命名空间声明,示例代码如下:

    DATASET Document:WRITE-XML(
        "FILE", 
        "output.xml", 
        TRUE,  /* 开启格式化输出 */
        ?,     /* 使用默认编码 */
        ?,     /* 不指定样式表 */
        ?,     /* 默认使用顶层表名作为根元素 */
        "UTF-8", 
        FALSE  /* 不启用NO-TOP-ELEMENT,保留顶层表作为根节点 */
    ).
    
  3. 确认数据关系配置
    现有DATA-RELATION的NESTED属性配置正确,嵌套关系不会强制根元素重新声明命名空间,无需修改。

完成以上操作后,生成的XML将仅在文档头部保留命名空间声明,根元素<CstmrCdtTrfInitn>不会重复出现命名空间属性。


内容的提问来源于stack exchange,提问作者JSS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 20:22:34