users@jaxb.java.net

Re: JAXB Unmarshalling error unexpected element

From: Wolfgang Laun <wolfgang.laun_at_gmail.com>
Date: Fri, 29 Jan 2010 11:32:34 +0100

What is this "other class" with output-value,... setpoints? Any
chance it can be confused with com.myProgram.arc.schema.CustomerModes?

Somehow you must have created an alternative for interpreting a
<permissions> element that's not based on the schema, where
<permissions> is subordinate to <arcdb>.

This leads to another question: What do you mean by "I am giving it an
element such as..."? An XML containing just <permissions/> cannot
be unmarshalled against the schema you've posted.

-W


On Thu, Jan 28, 2010 at 10:19 PM, cobrab <ben.facker_at_gmail.com> wrote:
>
> I'm trying to use jaxb 2.2 to unmarshal an xml configuration file, but I am
> having trouble fixing an error.  It seems as if the unmarshaller is binding
> to the wrong class.  The output-value, limit-high, command-high, and
> setpoints are all values in another class.  I've called the .toString method
> on the JAXBContext instance and it is aware of all the classes I am trying
> to use.  Ff I give it an xml file without the proper elements the validator
> gets angry and tells me I need to supply the correct format so it is aware
> of the format the xml should be in.  Any ideas would be appreciated.
>
> I am giving it an element such as:
> <permissions>
>    <customer-modes>
>        <customer guid=”XXXXXXXXXXX”/>
>        <application-mode id=”something”/>
>    </customer-modes>
> </permissions>
>
> Stacktrace from unmarshaller:
> Line:Col[14:59]:unexpected element
> (uri:"http://www.myProgram.com/schemas/arc", local:"customer"). Expected
> elements are
> <{http://www.myProgram.com/schemas/arc}output-value>,<{http://www.myProgram.com/schemas/arc}limit-high>,<{http://www.myProgram.com/schemas/arc}command-value>,<{http://www.myProgram.com/schemas/arc}input-value>,<{http://www.myProgram.com/schemas/arc}setpoint>
> execption reading file /varco/data/configuration/Arc/arc-permissions.xml
> com.myProgram.arc.error.ArcException: javax.xml.bind.UnmarshalException:
> unexpected element (uri:"http://www.myProgram.com/schemas/arc",
> local:"customer"). Expected elements are
> <{http://www.myProgram.com/schemas/arc}output-value>,<{http://www.myProgram.com/schemas/arc}limit-high>,<{http://www.myProgram.com/schemas/arc}command-value>,<{http://www.myProgram.com/schemas/arc}input-value>,<{http://www.myProgram.com/schemas/arc}setpoint>
> - Error while opening file:
> /varco/data/configuration/Arc/arc-permissions.xml:com.myProgram.arc.error.ArcException:
> javax.xml.bind.UnmarshalException: unexpected element
> (uri:"http://www.myProgram.com/schemas/arc", local:"customer"). Expected
> elements are
> <{http://www.myProgram.com/schemas/arc}output-value>,<{http://www.myProgram.com/schemas/arc}limit-high>,<{http://www.myProgram.com/schemas/arc}command-value>,<{http://www.myProgram.com/schemas/arc}input-value>,<{http://www.myProgram.com/schemas/arc}setpoint>
> - com.myProgram.arc.error.ArcException: javax.xml.bind.UnmarshalException:
> unexpected element (uri:"http://www.myProgram.com/schemas/arc",
> local:"customer"). Expected elements are
> <{http://www.myProgram.com/schemas/arc}output-value>,<{http://www.myProgram.com/schemas/arc}limit-high>,<{http://www.myProgram.com/schemas/arc}command-value>,<{http://www.myProgram.com/schemas/arc}input-value>,<{http://www.myProgram.com/schemas/arc}setpoint>
>        at com.myProgram.arc.core.XmlService.unmarshal(XmlService.java:140)
>        at
> com.myProgram.arc.core.FileBasedService.loadFile(FileBasedService.java:192)
>
>
>
> the a sample of what I think are the pertinent parts of the xsd is:
>
> <?xml version="1.0" encoding="utf-8" ?>
> <xs:schema id="arc-protocol-1"
>    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>        xmlns:arc="http://www.myProgram.com/schemas/arc"
>        targetNamespace="http://www.myProgram.com/schemas/arc"
>        elementFormDefault="qualified">
>
>        <xs:element name="arcdb">
>                <xs:complexType>
>                        <xs:choice>
>                                <xs:element name="configuration" type="arc:configuration" minOccurs="1"
> maxOccurs="1"/>
>                                <xs:element name="calibration" type="arc:calibration" minOccurs="1"
> maxOccurs="1"/>
>                                <xs:element name="permissions" type="arc:permissions" minOccurs="1"
> maxOccurs="1"/>
>                        </xs:choice>
>                </xs:complexType>
>        </xs:element><xs:complexType name="permissions">
>                <xs:sequence>
>                        <xs:element name="customer-modes" type="arc:customer-modes" minOccurs="1"
> maxOccurs="unbounded"/>
>                        <xs:element name="application-mode" type="arc:application-mode"
> minOccurs="1" maxOccurs="unbounded"/>
>                </xs:sequence>
>        </xs:complexType>
>
>        <xs:complexType name="application-mode">
>                <xs:choice minOccurs="0" maxOccurs="unbounded">
>                        <xs:element name="authorization" type="arc:authorization"/>
>                </xs:choice>
>                <xs:attribute name="id" type="arc:application-modes" use="required"/>
>        </xs:complexType>
>
>        <xs:simpleType name="application-modes">
>                <xs:restriction base="xs:string">
>                        <xs:enumeration value="XXXX"/>
>                        <xs:enumeration value="YYYY"/>
>                </xs:restriction>
>        </xs:simpleType>
>                <xs:complexType name="customer-modes">
>                <xs:sequence>
>                        <xs:element name="customer" type="arc:customer" minOccurs="1"
> maxOccurs="1"/>
>                        <xs:element name="application-mode" type="arc:application-mode"
> minOccurs="1" maxOccurs="unbounded"/>
>                </xs:sequence>
>        </xs:complexType>
>           <xs:complexType name="customer">
>                <xs:attribute name="guid" type="xs:string" use="required"/>
>        </xs:complexType>
> </xs:schema>
>
>
> Binding:
>
> <jxb:bindings version="1.0"
>        xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
>        xmlns:xs="http://www.w3.org/2001/XMLSchema"
>        schemaLocation="../schema/arc-protocol-1.0.0.xsd" node="/xs:schema">
>
>        <jxb:globalBindings>
>                <jxb:serializable/>
>        </jxb:globalBindings>
>
>    <jxb:schemaBindings>
>      <jxb:package name="com.myProgram.arc.schema"/>
>    </jxb:schemaBindings>
>
>   <jxb:bindings node="//xs:complexType[@name='customer']">
>                <jxb:class name="ArcCustomer"/>
>        </jxb:bindings>
>
>    <jxb:bindings node="//xs:complexType[@name='channel']">
>                <jxb:class name="ArcChannel"/>
>        </jxb:bindings>
>
>        <jxb:bindings node="//xs:complexType[@name='diagnostics']">
>                <jxb:class name="ArcDiagnostics"/>
>        </jxb:bindings>
>
>        <jxb:bindings node="//xs:complexType[@name='channels']">
>                <jxb:class name="ArcChannels"/>
>        </jxb:bindings>
>
>        <jxb:bindings node="//xs:complexType[@name='header']">
>                <jxb:class name="ArcHeader"/>
>        </jxb:bindings>
>
>        <jxb:bindings node="//xs:complexType[@name='session']">
>                <jxb:class name="ArcSession"/>
>        </jxb:bindings>
>
>        <jxb:bindings node="//xs:complexType[@name='request']">
>                <jxb:class name="ArcRequest"/>
>        </jxb:bindings>
>
>        <jxb:bindings node="//xs:complexType[@name='response']">
>                <jxb:class name="ArcResponse"/>
>        </jxb:bindings>
>
>        <jxb:bindings node="//xs:complexType[@name='configuration']">
>                <jxb:class name="ArcConfiguration"/>
>        </jxb:bindings>
>
>        <jxb:bindings node="//xs:complexType[@name='calibration']">
>                <jxb:class name="ArcCalibration"/>
>        </jxb:bindings>
>
>        <jxb:bindings node="//xs:complexType[@name='permissions']">
>                <jxb:class name="ArcPermissions"/>
>        </jxb:bindings>
>
>        <jxb:bindings node="//xs:complexType[@name='value']">
>                <jxb:class name="ArcValue"/>
>        </jxb:bindings>
>
>        <jxb:bindings node="//xs:complexType[@name='sequence']">
>                <jxb:class name="ArcSequence"/>
>        </jxb:bindings>
>
>        <jxb:bindings node="//xs:complexType[@name='command']">
>                <jxb:class name="ArcCommand"/>
>        </jxb:bindings>
>
>        <jxb:bindings node="//xs:complexType[@name='status']">
>                <jxb:class name="ArcStatus"/>
>        </jxb:bindings>
>
>        <jxb:bindings node="//xs:complexType[@name='access-log']">
>                <jxb:class name="ArcAccessLog"/>
>        </jxb:bindings>
>
> </jxb:bindings>
> --
> View this message in context: http://old.nabble.com/JAXB-Unmarshalling-error-unexpected-element-tp27361412p27361412.html
> Sent from the java.net - jaxb users mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_jaxb.dev.java.net
> For additional commands, e-mail: users-help_at_jaxb.dev.java.net
>
>