2013-04-01 5 views
5

Sto ottenendo il seguente errore: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> 

mia radice file di classe elemento è:

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

mio file 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; 

fatemi sapere cosa posso fare per risolvere questo

risposta

5

TL; DR

Hai un extra/alla fine dello spazio dei nomi specificato nel @XmlRootElement annotazione.


risposta lunga

pacchetto-info

Lo spazio dei nomi sia specificato correttamente nel livello di pacchetto @XmlSchema annotazione:

@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

Tuttavia, è stato sovrascritto con uno spazio dei nomi errato nella classe ClientConfig. È disponibile uno / alla fine dello spazio dei nomi specificato nell'annotazione @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 {} 

Dal momento che lo spazio dei nomi dichiarati sul @XmlSchema sulla classe package-info non c'è bisogno di ripeterla sul @XmlRootElement.

package com.convertXml.docSite.XmlConverter; 

import javax.xml.bind.annotation.XmlRootElement; 

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

Demo

Ora il unmarshal funzionerà correttamente:

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); 
    } 

} 

Per ulteriori informazioni

+2

Grazie Blasie..it ha funzionato – dreambigcoder