2013-05-07 161 views
2

我想在「編組」時爲我的xml屬性提供自定義名稱空間。我知道有兩種方法可以實現這一點。一個是壓倒一切的「NameSpacePrefixMapper」類的方法,如果我們傾向於用包裝「的javax.xml.bind」和另一種方式是在packege-info.java定義是不再有效JAXB XML自定義名稱空間

@javax.xml.bind.annotation.XmlSchema(
namespace = "http://base.google.com/ns/1.0", 
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED, 
xmlns = { 
@javax.xml.bind.annotation.XmlNs(prefix = "g", 
namespaceURI="http://base.google.com/ns/1.0") 
} 
) 
package com.test; 

此爲正常工作但它是給所有屬性的名稱空間,如下所示

<g:feed xmlns:g="http://base.google.com/ns/1.0" xmlns="http://www.w3.org/2005/Atom"> 
    <g:title>intersportOnlineshopping</g:title> 
    <g:link>http://www.intersport.de</g:link> 
    <g:summary>it is a merchantaised online shopping system<summary> 
    <g:entry> 
     <g:articleID>7611319580577</g:articleID> 
     <g:articleTitle>ETIREL Damen Bikinihose »Melly solid«</g:articleTitle> 
     <g:size>0</g:size> 
    </g:entry> 
<g:feed> 

我不想那樣。我只想爲我打算的屬性命名空間(如下所示)。

<feed xmlns:g="http://base.google.com/ns/1.0" xmlns="http://www.w3.org/2005/Atom"> 
    <title>intersportOnlineshopping<title> 
    <link>http://www.intersport.de<link> 
    <summary>it is a merchantaised online shopping system</g:summary> 
    <entry> 
     <articleID>7611319580577<articleID> 
     <g:articleTitle>ETIREL Damen Bikinihose »Melly solid«</g:articleTitle> 
     <g:size>0</g:size> 
    </entry> 
<feed> 

我該怎麼做。感謝您的任何幫助

回答

0

@XmlSchema註釋更改爲僅指定命名空間前綴。然後在@XmlElement註釋中指定名稱空間參數。

+0

我僅爲一個屬性給出了註解@XmlElement(namespace =「http://base.google.com/ns/1.0」)。名字空間仍然是所有人的追求。我怎樣才能限制@XmlSchema註釋到特定的方法 – user964147 2013-05-07 10:26:44

+1

@ user964147 - 你是否從'@ XmlSchema'註釋中除去了'xmlns'屬性? – 2013-05-07 10:37:58

+1

剛纔我做到了,它的工作文件非常感謝 – user964147 2013-05-07 10:45:25