Hi,
I am trying to manually write JAXB annotated POJOs to convert my xmls into
java objects using jaxb and vice versa.
Below is the code
1)First Java Class - ContentTypes
********************************************************************************
@XmlRootElement(name="content-types")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(namespace="
http://xmlns.escenic.com/2008/content-type")
public class ContentTypes {
@XmlElement(name="content-type",
namespace="
http://xmlns.escenic.com/2008/content-type")
protected List<ContentType> contentType;
public List<ContentType> getContentType() {
if (contentType == null) {
contentType = new ArrayList<ContentType>();
}
return this.contentType;
}
@Override
public String toString() {
return "ContentTypes [contentType=" + contentType + "]";
}
}
2)Second Class - ContentType
********************************************************************
@XmlAccessorType(XmlAccessType.FIELD)//annotation tells JAXB that only the
fields will be marshalled to XML
public class ContentType {
@XmlElement(name = "ui:label",
namespace="
http://xmlns.escenic.com/2008/interface-hints/")
protected String label;
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
}
3)Third Java Class - package-info.java
***********************************************************************
@javax.xml.bind.annotation.XmlSchema (
xmlns = {
@javax.xml.bind.annotation.XmlNs(prefix = "",
namespaceURI="
http://xmlns.escenic.com/2008/content-type"),
@javax.xml.bind.annotation.XmlNs(prefix = "ui",
namespaceURI="
http://xmlns.escenic.com/2008/interface-hints"),
},
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED
)
package contentTypePojo;
4)jaxb.index - This has these two entries
***********************************************************************
ContentTypes
ContentType
5)content-type.xml
*************************************************************************
<?xml version="1.0"?>
<content-types xmlns="
http://xmlns.escenic.com/2008/content-type"
xmlns:ui="
http://xmlns.escenic.com/2008/interface-hints">
<content-type name="article">
<ui:label>Article</ui:label>
</content-type>
</content-types>
6)Test class - I am using java main to run the above code
***********************************************************************
public class Test {
public static void main(String[] args) throws JAXBException {
// TODO Auto-generated method stub
JAXBContext jc = JAXBContext.newInstance("contentTypePojo");
Unmarshaller unmarshaller = jc.createUnmarshaller();
unmarshaller.setEventHandler(new
javax.xml.bind.helpers.DefaultValidationEventHandler());
File xml = new File("c:/content-type.xml");
ContentTypes contentTypes = (ContentTypes)
unmarshaller.unmarshal(xml);
System.out.println(contentTypes);
}
}
I am getting the below error:
***************************************************************
DefaultValidationEventHandler: [FATAL_ERROR]: unexpected element
(uri:"
http://xmlns.escenic.com/2008/content-type", local:"content-types").
Expected elements are <{}content-types>
Location: line 2 of file:/c:/content-type.xml
Exception in thread "main" javax.xml.bind.UnmarshalException: unexpected
element (uri:"
http://xmlns.escenic.com/2008/content-type",
local:"content-types"). Expected elements are <{}content-types>
at
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:642)
at
com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:254)
at
com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:249)
I have looked on net for all possible forums and content, but the code does
not work. Can you please help me to figure out what I am doing wrong
--
View this message in context: http://glassfish.10926.n7.nabble.com/javax-xml-bind-UnmarshalException-unexpected-element-uri-http-xmlns-escenic-com-2008-content-type-lo-tp87475.html
Sent from the JAXB users mailing list archive at Nabble.com.