2015-03-31 83 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