Java 如何在jaxb-xjc-ann元素上注释名称空间
我需要创建包含付款信息的xml文档。有几个名称空间,有必要为每个标记添加前缀。这是我的设置: xsd: 生成xml的代码:Java 如何在jaxb-xjc-ann元素上注释名称空间,java,xml,jaxb,annotations,xjc,Java,Xml,Jaxb,Annotations,Xjc,我需要创建包含付款信息的xml文档。有几个名称空间,有必要为每个标记添加前缀。这是我的设置: xsd: 生成xml的代码: private void startXmlFiles(String[] args) { JAXBContext jaxbContext; File file = new File("C:\\file.xml"); try { jaxbContext = JAXBContext.newInstance(Document.class);
private void startXmlFiles(String[] args) {
JAXBContext jaxbContext;
File file = new File("C:\\file.xml");
try {
jaxbContext = JAXBContext.newInstance(Document.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
Document nroot = new Document();
nroot.setFIToFICstmrCdtTrf(new FIToFICustomerCreditTransferV02());
nroot.getFIToFICstmrCdtTrf().setGrpHdr(new GroupHeader33());
nroot.getFIToFICstmrCdtTrf().getGrpHdr().setMsgId("MsgId");
CreditTransferTransactionInformation11 CdtTrfTxInf = new CreditTransferTransactionInformation11();
CdtTrfTxInf.setPmtId(new PaymentIdentification3());
CdtTrfTxInf.getPmtId().setEndToEndId("End2End");
CdtTrfTxInf.getPmtId().setInstrId("InstrId");
CdtTrfTxInf.getPmtId().setTxId("TxId");
nroot.getFIToFICstmrCdtTrf().getCdtTrfTxInf().add(CdtTrfTxInf);
jaxbMarshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, "urn:EESCTSIBI:xsd:$SCTSIBIBlkCredTrf SCTSIBIBlkCredTrf.xsd");
jaxbMarshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", new NamespacePrefixMapper() {
@Override
public String[] getPreDeclaredNamespaceUris() {
return new String[] { WellKnownNamespace.XML_SCHEMA_INSTANCE };
}
@Override
public String[] getPreDeclaredNamespaceUris2() {
// TODO Auto-generated method stub
return super.getPreDeclaredNamespaceUris2();
}
@Override
public String getPreferredPrefix(String namespaceUri, String suggestion, boolean requirePrefix) {
if (namespaceUri.equals(WellKnownNamespace.XML_SCHEMA_INSTANCE))
return "xsi";
if (namespaceUri.equals(WellKnownNamespace.XML_SCHEMA))
return "xs";
if (namespaceUri.equals(WellKnownNamespace.XML_MIME_URI))
return "xmime";
if (namespaceUri.equals("urn:EESCTSIBI:xsd:$SCTSIBIBlkCredTrf"))
return "EESCTSIBI";
if (namespaceUri.equals("urn:iso:std:iso:20022:tech:xsd:pacs.008.001.02"))
return "sw8";
return suggestion;
}
@Override
public String[] getContextualNamespaceDecls() {
// TODO Auto-generated method stub
return super.getContextualNamespaceDecls();
}
});
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
//jaxbMarshaller.marshal(nroot, file);
jaxbMarshaller.marshal(nroot, System.out);
} catch (Exception e) {
e.printStackTrace();
}
}
生成的xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<EESCTSIBI:SCTSIBIBlkCredTrf xmlns:sw8="urn:iso:std:iso:20022:tech:xsd:pacs.008.001.02" xmlns:EESCTSIBI="urn:EESCTSIBI:xsd:$SCTSIBIBlkCredTrf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:EESCTSIBI:xsd:$SCTSIBIBlkCredTrf SCTSIBIBlkCredTrf.xsd">
<sw8:FIToFICstmrCdtTrf>
<sw8:GrpHdr>
<sw8:MsgId>MsgId</sw8:MsgId>
</sw8:GrpHdr>
<sw8:CdtTrfTxInf>
<sw8:PmtId>
<sw8:InstrId>InstrId</sw8:InstrId>
<sw8:EndToEndId>End2End</sw8:EndToEndId>
<sw8:TxId>TxId</sw8:TxId>
</sw8:PmtId>
</sw8:CdtTrfTxInf>
</sw8:FIToFICstmrCdtTrf>
MsgId
英斯特里德
结束
环氧乙烷
xml应为:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<EESCTSIBI:SCTSIBIBlkCredTrf xmlns:sw8="urn:iso:std:iso:20022:tech:xsd:pacs.008.001.02" xmlns:EESCTSIBI="urn:EESCTSIBI:xsd:$SCTSIBIBlkCredTrf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:EESCTSIBI:xsd:$SCTSIBIBlkCredTrf SCTSIBIBlkCredTrf.xsd">
<EESCTSIBI:FIToFICstmrCdtTrf xmlns="urn:iso:std:iso:20022:tech:xsd:pacs.008.001.02">
<sw8:GrpHdr>
<sw8:MsgId>MsgId</sw8:MsgId>
</sw8:GrpHdr>
<sw8:CdtTrfTxInf>
<sw8:PmtId>
<sw8:InstrId>InstrId</sw8:InstrId>
<sw8:EndToEndId>End2End</sw8:EndToEndId>
<sw8:TxId>TxId</sw8:TxId>
</sw8:PmtId>
</sw8:CdtTrfTxInf>
</EESCTSIBI:FIToFICstmrCdtTrf>
MsgId
英斯特里德
结束
环氧乙烷
我应该如何更改我的xjb文件
thx 4答复
private void startXmlFiles(String[] args) {
JAXBContext jaxbContext;
File file = new File("C:\\file.xml");
try {
jaxbContext = JAXBContext.newInstance(Document.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
Document nroot = new Document();
nroot.setFIToFICstmrCdtTrf(new FIToFICustomerCreditTransferV02());
nroot.getFIToFICstmrCdtTrf().setGrpHdr(new GroupHeader33());
nroot.getFIToFICstmrCdtTrf().getGrpHdr().setMsgId("MsgId");
CreditTransferTransactionInformation11 CdtTrfTxInf = new CreditTransferTransactionInformation11();
CdtTrfTxInf.setPmtId(new PaymentIdentification3());
CdtTrfTxInf.getPmtId().setEndToEndId("End2End");
CdtTrfTxInf.getPmtId().setInstrId("InstrId");
CdtTrfTxInf.getPmtId().setTxId("TxId");
nroot.getFIToFICstmrCdtTrf().getCdtTrfTxInf().add(CdtTrfTxInf);
jaxbMarshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, "urn:EESCTSIBI:xsd:$SCTSIBIBlkCredTrf SCTSIBIBlkCredTrf.xsd");
jaxbMarshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", new NamespacePrefixMapper() {
@Override
public String[] getPreDeclaredNamespaceUris() {
return new String[] { WellKnownNamespace.XML_SCHEMA_INSTANCE };
}
@Override
public String[] getPreDeclaredNamespaceUris2() {
// TODO Auto-generated method stub
return super.getPreDeclaredNamespaceUris2();
}
@Override
public String getPreferredPrefix(String namespaceUri, String suggestion, boolean requirePrefix) {
if (namespaceUri.equals(WellKnownNamespace.XML_SCHEMA_INSTANCE))
return "xsi";
if (namespaceUri.equals(WellKnownNamespace.XML_SCHEMA))
return "xs";
if (namespaceUri.equals(WellKnownNamespace.XML_MIME_URI))
return "xmime";
if (namespaceUri.equals("urn:EESCTSIBI:xsd:$SCTSIBIBlkCredTrf"))
return "EESCTSIBI";
if (namespaceUri.equals("urn:iso:std:iso:20022:tech:xsd:pacs.008.001.02"))
return "sw8";
return suggestion;
}
@Override
public String[] getContextualNamespaceDecls() {
// TODO Auto-generated method stub
return super.getContextualNamespaceDecls();
}
});
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
//jaxbMarshaller.marshal(nroot, file);
jaxbMarshaller.marshal(nroot, System.out);
} catch (Exception e) {
e.printStackTrace();
}
}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<EESCTSIBI:SCTSIBIBlkCredTrf xmlns:sw8="urn:iso:std:iso:20022:tech:xsd:pacs.008.001.02" xmlns:EESCTSIBI="urn:EESCTSIBI:xsd:$SCTSIBIBlkCredTrf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:EESCTSIBI:xsd:$SCTSIBIBlkCredTrf SCTSIBIBlkCredTrf.xsd">
<sw8:FIToFICstmrCdtTrf>
<sw8:GrpHdr>
<sw8:MsgId>MsgId</sw8:MsgId>
</sw8:GrpHdr>
<sw8:CdtTrfTxInf>
<sw8:PmtId>
<sw8:InstrId>InstrId</sw8:InstrId>
<sw8:EndToEndId>End2End</sw8:EndToEndId>
<sw8:TxId>TxId</sw8:TxId>
</sw8:PmtId>
</sw8:CdtTrfTxInf>
</sw8:FIToFICstmrCdtTrf>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<EESCTSIBI:SCTSIBIBlkCredTrf xmlns:sw8="urn:iso:std:iso:20022:tech:xsd:pacs.008.001.02" xmlns:EESCTSIBI="urn:EESCTSIBI:xsd:$SCTSIBIBlkCredTrf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:EESCTSIBI:xsd:$SCTSIBIBlkCredTrf SCTSIBIBlkCredTrf.xsd">
<EESCTSIBI:FIToFICstmrCdtTrf xmlns="urn:iso:std:iso:20022:tech:xsd:pacs.008.001.02">
<sw8:GrpHdr>
<sw8:MsgId>MsgId</sw8:MsgId>
</sw8:GrpHdr>
<sw8:CdtTrfTxInf>
<sw8:PmtId>
<sw8:InstrId>InstrId</sw8:InstrId>
<sw8:EndToEndId>End2End</sw8:EndToEndId>
<sw8:TxId>TxId</sw8:TxId>
</sw8:PmtId>
</sw8:CdtTrfTxInf>
</EESCTSIBI:FIToFICstmrCdtTrf>