2015-03-31 46 views
0

我有跟隨的問題,當我生成XML文件Jaxb添加前綴到根元素的名稱空間,我不知道如何跳過它。Jaxb XML編組添加前綴到根元素

我package-info.java文件

@XmlSchema(namespace = "urn:iso:std:iso:20022:tech:xsd:pain.001.001.03", xmlns = { 
     @XmlNs(namespaceURI = "urn:iso:std:iso:20022:tech:xsd:pain.001.001.03", prefix = "") 
}, elementFormDefault = XmlNsForm.QUALIFIED) 

我有根元素

@XmlType(name = "Document", 
     propOrder = { 
       "cstmrCdtTrfInitn" 
     }) 
@XmlRootElement(name = "Document") 
public class Document { 

     @XmlElement(name = "CstmrCdtTrfInitn", required = true) 
     protected CustomerCreditTransferInitiationV03 cstmrCdtTrfInitn; 
    } 

而作爲結果我

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<ns2:Document xmlns:ns2="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"> 
    <ns2:CstmrCdtTrfInitn> 
     <ns2:GrpHdr/> 
    </ns2:CstmrCdtTrfInitn> 
</ns2:Document> 

沒有@XmlNs它相同的方式工作,將命名空間添加到@XmlRoolElement也無濟於事。 它有什麼問題?

回答

0

不知道你在試圖達到什麼目的,你的xml完全匹配你的代碼。

如果你不想在命名空間都:

<Document> 
<CstmrCdtTrfInitn> 
    <GrpHdr>ala</GrpHdr> 
</CstmrCdtTrfInitn> 
</Document 

只要切換到

@XmlSchema() 

包的信息,如果你想使用目標命名空間(所以沒有前綴),像

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

then

@XmlSchema(
    namespace = "urn:iso:std:iso:20022:tech:xsd:pain.001.001.03", 
    elementFormDefault = XmlNsForm.QUALIFIED) 

上述所有標準Java7 JAXB測試

+0

準確,但這個問題我得到NS2前綴xml: – ekitru 2015-04-01 08:31:10

+0

什麼是您的JAXB提供商。它是一個真實的例子,或者是另一個例如soap消息的文檔部分。 – Zielu 2015-04-01 14:39:30