2010-05-20 61 views
0

當我使用註釋:的Java XML與錯的xmlns綁定屬性名稱

@XmlRootElement(name="RootElement", namespace="namespace") 
class RootElement { 

創建從Java的XML文件,它創建了根元素:

<ns2:RootElement xmlns:ns2="namespace"> 

,但我想創造沒有「ns2」,如:

<RootElement xmlns="namespace"> 

任何想法如何解決它?

Reletad鏈接(比如我用來創建XML): http://www.java2s.com/Code/JavaAPI/javax.xml.bind.annotation/XmlRootElementname.htm

回答

2

JAXB不會在你的情況下使用xmlns = "namespace"因爲xmlns = "namespace"還指定了子元素的命名空間,那麼你的firstlast元素都在默認名稱空間(因爲@XmlRootElement未指定子元素的名稱空間)。所以,你需要使用@XmlElementfirstlast設置命名空間:

@XmlElement(namespace = "namespace") 
    public String getFirst() { 
    return first; 
    } 

    ... 

    @XmlElement(namespace = "namespace") 
    public String getLast() { 
    return last; 
    } 

你也可以不用通過使用數據包級的註釋中package-info.java寫命名空間的每一個元素:

@javax.xml.bind.annotation.XmlSchema(
    namespace = "namespace", 
    elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED) 
package foo; 
+0

有任何方式我可以強制jaxb使用xmlns =「」如果我的子元素來自同一個命名空間? 檢查我的問題.. http://stackoverflow.com/questions/18889133/xml-marshalling-i-want-namespace-attributes-and-not-prefixes – Tejas 2013-09-19 08:09:49