如何获取[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?
答案 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
我是作者之一。