如何从iso20022的e-repository获取基本数据类型的所有标签?

时间:2016-06-01 07:42:56

标签: xml xsd

如何获取[xsd数据类型(如xs:byte,xs:date,xs:dateTime,xs:decimal,xs:double,xs:duration等)或iso20022类型的基本数据类型的所有标记(如iso20022:Amount,iso20022:Binary,iso20022:Date,iso20022:DateTime等)来自e-repository.xml?

2 个答案:

答案 0 :(得分:4)

从您想要实现的消息的https://www.iso20022.org/message_archive.page XSD架构下载(Pain.001,Camt.053等),在Eclipse,Java和JAXB的帮助下,您可以获得所有数据模型的形式Java类。

修改

生成的数据模型示例:

Camt.053 - AmountAndCurrencyExchangeDetails4

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "AmountAndCurrencyExchangeDetails4", propOrder = {
    "tp",
    "amt",
    "ccyXchg"
})
public class AmountAndCurrencyExchangeDetails4 {

    @XmlElement(name = "Tp", required = true)
    protected String tp;
    @XmlElement(name = "Amt", required = true)
    protected ActiveOrHistoricCurrencyAndAmount amt;
    @XmlElement(name = "CcyXchg")
    protected CurrencyExchange5 ccyXchg;

    public String getTp() {
        return tp;
    }

    public void setTp(String value) {
        this.tp = value;
    }

    public ActiveOrHistoricCurrencyAndAmount getAmt() {
        return amt;
    }

    public void setAmt(ActiveOrHistoricCurrencyAndAmount value) {
        this.amt = value;
    }

    public CurrencyExchange5 getCcyXchg() {
        return ccyXchg;
    }

    public void setCcyXchg(CurrencyExchange5 value) {
        this.ccyXchg = value;
    }

}

Pain.001 - DateAndPlaceOfBirth

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.datatype.XMLGregorianCalendar;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "DateAndPlaceOfBirth", propOrder = {
    "birthDt",
    "prvcOfBirth",
    "cityOfBirth",
    "ctryOfBirth"
})
public class DateAndPlaceOfBirth {

    @XmlElement(name = "BirthDt", required = true)
    @XmlSchemaType(name = "date")
    protected XMLGregorianCalendar birthDt;
    @XmlElement(name = "PrvcOfBirth")
    protected String prvcOfBirth;
    @XmlElement(name = "CityOfBirth", required = true)
    protected String cityOfBirth;
    @XmlElement(name = "CtryOfBirth", required = true)
    protected String ctryOfBirth;

    public XMLGregorianCalendar getBirthDt() {
        return birthDt;
    }

    public void setBirthDt(XMLGregorianCalendar value) {
        this.birthDt = value;
    }

    public String getPrvcOfBirth() {
        return prvcOfBirth;
    }

    public void setPrvcOfBirth(String value) {
        this.prvcOfBirth = value;
    }

    public String getCityOfBirth() {
        return cityOfBirth;
    }

    public void setCityOfBirth(String value) {
        this.cityOfBirth = value;
    }

    public String getCtryOfBirth() {
        return ctryOfBirth;
    }

    public void setCtryOfBirth(String value) {
        this.ctryOfBirth = value;
    }

}

答案 1 :(得分:0)

您可能对Prowide的开源模型和解析器(针对ISO 20022消息)感兴趣。

它包括适用于所有ISO 20022消息类型的全面词典模型。

关键特征在于它不是XSD的默认jaxb生成,而是字典类不支持名称空间的自定义模型。因此,它们可以跨消息类型共享。然后,Mx模型类使用这些共享的类字典提供有效的解析器和生成器。

如果您必须处理许多不同的ISO 20022消息类型,则将有很大的不同。

链接到项目:https://github.com/prowide/prowide-iso20022

我是作者之一。