Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在jaxb-xjc-ann元素上注释名称空间_Java_Xml_Jaxb_Annotations_Xjc - Fatal编程技术网

Java 如何在jaxb-xjc-ann元素上注释名称空间

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);

我需要创建包含付款信息的xml文档。有几个名称空间,有必要为每个标记添加前缀。这是我的设置:

xsd:

生成xml的代码:

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>