2013-04-01 22 views
5

我收到以下錯誤:javax.xml.bind.UnmarshalException

javax.xml.bind.UnmarshalException: unexpected element(uri:"http://www.docsite.com/ClientConfig.xsd", local:"ClientConfig"). 
Expected elements are <{http://www.docsite.com/ClientConfig.xsd/}ClientConfig> 

我的根元素的類文件是:

@XmlRootElement(name="ClientConfig",namespace="http://www.docsite.com/ClientConfig.xsd/") 
public class ClientConfig {} 

我package.info文件是:

@XmlSchema(namespace="http://www.docsite.com/ClientConfig.xsd",elementFormDefault=XmlNsForm.QUALIFIED) 

package com.convertXml.docSite.XmlConverter; 
import javax.xml.bind.annotation.XmlSchema; 
import javax.xml.bind.annotation.XmlNsForm; 

讓我知道我能做些什麼來解決這個問題

回答

5

TL; DR

您在@XmlRootElement批註中指定的命名空間的末尾有一個/多餘的。


LONG ANSWER

包信息

的正確指定命名空間在封裝級@XmlSchema註釋:

@XmlSchema(namespace="http://www.docsite.com/ClientConfig.xsd",elementFormDefault=XmlNsForm.QUALIFIED) 
package com.convertXml.docSite.XmlConverter; 

import javax.xml.bind.annotation.XmlSchema; 
import javax.xml.bind.annotation.XmlNsForm; 

ClientConfig

但是,您已用ClientConfig類上的錯誤名稱空間覆蓋它。在@XmlRooElement批註中指定的名稱空間末尾,您有一個額外的/

package com.convertXml.docSite.XmlConverter; 

import javax.xml.bind.annotation.XmlRootElement; 

@XmlRootElement(name="ClientConfig",namespace="http://www.docsite.com/ClientConfig.xsd/") 
public class ClientConfig {} 

既然你宣佈對@XmlSchema的命名空間的package-info類,你不需要重複的@XmlRootElement

package com.convertXml.docSite.XmlConverter; 

import javax.xml.bind.annotation.XmlRootElement; 

@XmlRootElement(name="ClientConfig") 
public class ClientConfig {} 

演示

現在unmarshal將正常工作:

package com.convertXml.docSite.XmlConverter; 

import java.io.StringReader; 
import javax.xml.bind.*; 

public class Demo { 

    public static void main(String[] args) throws Exception { 
     JAXBContext jc = JAXBContext.newInstance(ClientConfig.class); 

     Unmarshaller unmarshaller = jc.createUnmarshaller(); 
     StringReader xml = new StringReader("<ClientConfig xmlns='http://www.docsite.com/ClientConfig.xsd'/>"); 
     ClientConfig clientConfig = (ClientConfig) unmarshaller.unmarshal(xml); 
    } 

} 

更多信息

+2

謝謝Blasie..it工作 – dreambigcoder

相關問題