users@jaxb.java.net

Re: JAXB Unmarshalling error unexpected element

From: cobrab <ben.facker_at_gmail.com>
Date: Sat, 30 Jan 2010 10:59:10 -0800 (PST)

The other lines are the xml statement and a comment. They are not
interpreted.

I have a validator. The validator will throw an error if the xml is
formatted incorrectly, but after it checks a valid xml this error comes up
saying it has unexpected elements. I have tried to take out the channel
classes binding and schema information to see if it would help, but it then
said it found unexpected element local:customer expecting element
calib-point. It is like the unmarshaller is missing an xml schema
breakpoint or something. I have tried changing the order of the schema, but
it gave the same error as before.



Wolfgang Laun-2 wrote:
>
> Well, the schema is OK, and I have no problem unmarshalling the snippet
> you mailed in your 1st posting using code generated from it. But note
> that the stack trace points out an error in line 14, whereas your XML only
> has 6 lines.
>
> Also, I'd recommend that you use validation against the XML schema
> during unmarshalling, which is easy to set up.
>
> Another question due to your sentence:
>
> "I have a file called arc-permissions.xml containing the permissions
> element
> that is passed into the system and it is cast to a arcdb."
>
> What do you mean by "casting a file to a arcdb"??
>
> -W
>
> On Fri, Jan 29, 2010 at 7:03 PM, cobrab <ben.facker_at_gmail.com> wrote:
>>
>>
>>
>> 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
>>
>> W, thanks for the reply.  The class that it is trying to pull elements
>> from
>> is called ArcChannel which is defined by channel in the schema.
>> Customer-modes is not the problem.  Sorry I didn't include channel in the
>> xsd exerpt.  I have added the entire file below.
>>
>> I have a file called arc-permissions.xml containing the permissions
>> element
>> that is passed into the system and it is cast to a arcdb.  It is when
>> unmarshaling the arc-permissions.xml that I get the error.
>>
>> The java implimentation for this is:
>>
>>                        File input1 = new File(name);//which is
>> arc-permissions.xml
>>                        if (input1.exists() == false) {
>>                                return null;
>>                        }
>>                        Arcdb contents =
>>  (Arcdb)this.xmlService.unmarshal(input1);
>>                        return contents;
>>
>> xmlService just calls unmarshal on the file.
>>
>>
>> Full xsd file:
>>
>> <?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:annotation>
>>                <xs:documentation xml:lang="en">
>>                        Controller Communication Protocol version 1.0.0.
>>                </xs:documentation>
>>        </xs:annotation>
>>
>>        <xs:element name="arc-packet">
>>                <xs:complexType>
>>                        <xs:sequence>
>>                                <xs:element name="header"
>> type="arc:header" minOccurs="1"
>> maxOccurs="1"/>
>>                                <xs:choice  minOccurs="1"
>> maxOccurs="unbounded">
>>                                        <xs:element name="request"
>> type="arc:request"/>
>>                                        <xs:element name="response"
>> type="arc:response"/>
>>                                </xs:choice>
>>                        </xs:sequence>
>>                        <xs:attribute name="id" type="xs:string"
>> use="optional"/>
>>                </xs:complexType>
>>        </xs:element>
>>
>>        <xs:element name="command-abf">
>>                <xs:complexType>
>>                        <xs:choice minOccurs="1" maxOccurs="1">
>>                                <xs:element name="command-batch"
>> type="arc:command-batch"/>
>>                                <xs:element name="sequence"
>> type="arc:sequence"/>
>>                        </xs:choice>
>>                </xs:complexType>
>>        </xs:element>
>>
>>        <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:element name="configuration">
>>                <xs:complexType>
>>                        <xs:complexContent>
>>                                <xs:extension base="arc:configuration"/>
>>                        </xs:complexContent>
>>                </xs:complexType>
>>        </xs:element>
>>
>>        <xs:simpleType name="response-codes">
>>                <xs:restriction base="xs:string">
>>                        <xs:enumeration value="OK"/>
>>                        <xs:enumeration value="FAILURE"/>
>>                        <xs:enumeration value="NOT_CONNECTED"/>
>>                        <xs:enumeration value="ERROR"/>
>>                        <xs:enumeration value="QBIT"/>
>>                        <xs:enumeration value="UNAUTHORIZED"/>
>>                </xs:restriction>
>>        </xs:simpleType>
>>
>>        <xs:simpleType name="function-types">
>>                <xs:restriction base="xs:string">
>>                        <xs:enumeration value="connect"/>
>>                        <xs:enumeration value="ping"/>
>>                        <xs:enumeration value="disconnect"/>
>>                        <xs:enumeration value="get-diagnostics"/>
>>                        <xs:enumeration value="get-current-values"/>
>>                        <xs:enumeration value="get-channel-value"/>
>>                        <xs:enumeration value="start"/>
>>                        <xs:enumeration value="abort"/>
>>                        <xs:enumeration value="get-configuration"/>
>>                        <xs:enumeration value="get-calibration"/>
>>                        <xs:enumeration value="get-command-sequence"/>
>>                        <xs:enumeration value="get-execution-status"/>
>>                        <xs:enumeration value="set-configuration"/>
>>                        <xs:enumeration value="set-calibration"/>
>>                        <xs:enumeration value="load-command-batch"/>
>>                        <xs:enumeration value="get-command-library-list"/>
>>                        <xs:enumeration value="get-command-library"/>
>>      <xs:enumeration value="get-access-log" />
>>                </xs:restriction>
>>        </xs:simpleType>
>>
>>        <xs:element name="function-set">
>>                <xs:complexType>
>>                        <xs:choice minOccurs="1" maxOccurs="unbounded">
>>                                <xs:element name="function"
>> type="arc:function-types"/>
>>                        </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="downlink"/>
>>                        <xs:enumeration value="fullcontrol"/>
>>                </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="authorization">
>>                <xs:attribute name="function" type="arc:function-types"/>
>>        </xs:complexType>
>>
>>        <xs:simpleType name="value-types">
>>                <xs:restriction base="xs:string">
>>                        <xs:enumeration value="eu"/>
>>                        <xs:enumeration value="percent"/>
>>                        <xs:enumeration value="raw"/>
>>                </xs:restriction>
>>        </xs:simpleType>
>>
>>        <xs:simpleType name="batch-mode">
>>                <xs:restriction base="xs:string">
>>                        <xs:enumeration value="NO_BATCH_LOADED"/>
>>                        <xs:enumeration value="INITIALIZED"/>
>>                        <xs:enumeration value="STARTED"/>
>>                        <xs:enumeration value="COMPLETED"/>
>>                        <xs:enumeration value="ABORTED_OPERATOR"/>
>>                        <xs:enumeration value="ABORTED_CLIENT"/>
>>                        <xs:enumeration value="ABORTED_ERROR"/>
>>                        <xs:enumeration value="ABORTED_HEARTBEAT"/>
>>                </xs:restriction>
>>        </xs:simpleType>
>>
>>        <xs:complexType name="header">
>>                <xs:sequence>
>>                        <xs:element name="version" type="xs:string"
>> minOccurs="1" maxOccurs="1"/>
>>                        <xs:element name="timestamp" type="xs:dateTime"
>> minOccurs="1"
>> maxOccurs="1"/>
>>                        <xs:element name="customer" type="arc:customer"
>> minOccurs="1"
>> maxOccurs="1"/>
>>                        <xs:element name="client-mac" type="xs:string"
>> minOccurs="1"
>> maxOccurs="1"/>
>>                        <xs:element name="session" type="arc:session"
>> minOccurs="1"
>> maxOccurs="1"/>
>>                </xs:sequence>
>>        </xs:complexType>
>>
>>        <xs:complexType name="customer">
>>                <xs:attribute name="guid" type="xs:string"
>> use="required"/>
>>        </xs:complexType>
>>
>>        <xs:complexType name="session">
>>                <xs:attribute name="guid" type="xs:string"
>> use="required"/>
>>                <xs:attribute name="ip" type="xs:string" use="optional"/>
>>        </xs:complexType>
>>
>>  <xs:complexType name="request">
>>    <xs:sequence>
>>      <xs:element name="function" type="arc:function-types" minOccurs="1"
>> maxOccurs="1" />
>>      <xs:choice minOccurs="0" maxOccurs="1">
>>        <xs:element name="calibration" type="arc:calibration" />
>>        <xs:element name="configuration" type="arc:configuration" />
>>        <xs:element name="diagnostics" type="arc:diagnostics" />
>>        <xs:element name="command-batch" type="arc:command-batch" />
>>        <xs:element name="current-values" type="arc:current-values" />
>>        <xs:element name="access-log" type="arc:access-log" />
>>        <xs:element name="channel-id" type="xs:integer" />
>>        <xs:element name="mode" type="arc:application-modes" minOccurs="1"
>> maxOccurs="1" />
>>      </xs:choice>
>>    </xs:sequence>
>>    <xs:attribute name="id" type="xs:string" use="required" />
>>  </xs:complexType>
>>
>>  <xs:complexType name="response">
>>    <xs:sequence>
>>      <xs:element name="function" type="arc:function-types" minOccurs="1"
>> maxOccurs="1" />
>>      <xs:element name="response-code" type="arc:response-codes"
>> minOccurs="1" maxOccurs="1" />
>>      <xs:element name="response-message" type="xs:string" minOccurs="1"
>> maxOccurs="1" />
>>      <xs:choice minOccurs="0" maxOccurs="1">
>>        <xs:element name="calibration" type="arc:calibration" />
>>        <xs:element name="configuration" type="arc:configuration" />
>>        <xs:element name="diagnostics" type="arc:diagnostics" />
>>        <xs:element name="command-batch" type="arc:command-batch" />
>>        <xs:element name="current-values" type="arc:current-values" />
>>        <xs:element name="access-log" type="arc:access-log" />
>>      </xs:choice>
>>      <xs:element name="status" type="arc:status" minOccurs="0"
>> maxOccurs="1" />
>>    </xs:sequence>
>>    <xs:attribute name="id" type="xs:string" use="required" />
>>  </xs:complexType>
>>
>>        <xs:complexType name="calibration">
>>                <xs:sequence>
>>                        <xs:element name="channel-calib"
>> type="arc:channel-calib" minOccurs="1"
>> maxOccurs="unbounded"/>
>>                </xs:sequence>
>>                <xs:attribute name="id" type="xs:string" use="optional"/>
>>                <xs:attribute name="persisted" type="xs:boolean"
>> use="optional"/>
>>        </xs:complexType>
>>
>>        <xs:complexType name="channel-calib">
>>                <xs:sequence>
>>                        <xs:element name="calib-point"
>> type="arc:calib-point" minOccurs="1"
>> maxOccurs="unbounded"/>
>>                </xs:sequence>
>>                <xs:attribute name="id" type="xs:integer" use="required"/>
>>                <xs:attribute name="last-calibrated" type="xs:dateTime"
>> use="required"/>
>>        </xs:complexType>
>>
>>        <xs:complexType name="calib-point">
>>                <xs:attribute name="raw" type="xs:decimal"
>> use="required"/>
>>                <xs:attribute name="eu" type="xs:decimal" use="required"/>
>>        </xs:complexType>
>>
>>        <xs:complexType name="configuration">
>>                <xs:sequence>
>>                        <xs:element name="channel-config"
>> type="arc:channel-config" minOccurs="1"
>> maxOccurs="unbounded"/>
>>                </xs:sequence>
>>                <xs:attribute name="id" type="xs:string" use="optional"/>
>>                <xs:attribute name="persisted" type="xs:boolean"
>> use="optional"/>
>>        </xs:complexType>
>>
>>        <xs:complexType name="channel-config">
>>                <xs:sequence>
>>                        <xs:element name="units" type="xs:string"
>> minOccurs="1" maxOccurs="1"/>
>>                        <xs:element name="limit-high"
>> type="arc:limit-high" minOccurs="1"
>> maxOccurs="1"/>
>>                        <xs:element name="setpoint" type="arc:setpoint"
>> minOccurs="1"
>> maxOccurs="1"/>
>>                </xs:sequence>
>>                <xs:attribute name="id" type="xs:integer" use="required"/>
>>                <xs:attribute name="name" type="xs:string"
>> use="required"/>
>>                <xs:attribute name="mirrorChannel" type="xs:integer"
>> use="required"/>
>>                <xs:attribute name="last-configured" type="xs:dateTime"
>> use="required"/>
>>        </xs:complexType>
>>
>>        <xs:complexType name="versioned-component">
>>                <xs:attribute name="version" type="xs:string"
>> use="required"/>
>>                <xs:attribute name="online" type="xs:boolean"
>> use="required"/>
>>        </xs:complexType>
>>
>>        <xs:simpleType name="command-types">
>>                <xs:restriction base="xs:string">
>>                        <xs:enumeration value="step"/>
>>                        <xs:enumeration value="slope"/>
>>                </xs:restriction>
>>        </xs:simpleType>
>>
>>        <xs:complexType name="value">
>>                <xs:attribute name="value" type="xs:decimal"
>> use="required"/>
>>                <xs:attribute name="value-type" type="arc:value-types"
>> use="required"/>
>>        </xs:complexType>
>>
>>        <xs:complexType name="limit-high">
>>                <xs:complexContent>
>>                        <xs:extension base="arc:value"/>
>>                </xs:complexContent>
>>        </xs:complexType>
>>
>>        <xs:complexType name="setpoint">
>>                <xs:complexContent>
>>                        <xs:extension base="arc:value"/>
>>                </xs:complexContent>
>>        </xs:complexType>
>>
>>        <xs:complexType name="diagnostics">
>>                <xs:sequence>
>>                        <xs:element name="arc-name" type="xs:string"
>> minOccurs="1"
>> maxOccurs="1"/>
>>                        <xs:element name="arc-service"
>> type="arc:versioned-component"
>> minOccurs="1" maxOccurs="1"/>
>>                        <xs:element name="arc-plc"
>> type="arc:versioned-component" minOccurs="1"
>> maxOccurs="1"/>
>>                        <xs:element name="v-daq"
>> type="arc:versioned-component" minOccurs="1"
>> maxOccurs="1"/>
>>                        <xs:element name="channels" type="arc:channels"
>> minOccurs="1"
>> maxOccurs="1"/>
>>                </xs:sequence>
>>        </xs:complexType>
>>
>>        <xs:complexType name="channels">
>>                <xs:sequence>
>>                        <xs:element name="channel" type="arc:channel"
>> minOccurs="1"
>> maxOccurs="unbounded"/>
>>                </xs:sequence>
>>                <xs:attribute name="id" type="xs:string" use="required"/>
>>        </xs:complexType>
>>
>>        <xs:complexType name="channel">
>>                <xs:sequence>
>>                        <xs:element name="setpoint" type="arc:setpoint"
>> minOccurs="1"
>> maxOccurs="1"/>
>>                        <xs:element name="limit-high"
>> type="arc:limit-high" minOccurs="0"
>> maxOccurs="1"/>
>>                        <xs:element name="command-value" type="arc:value"
>> minOccurs="0"
>> maxOccurs="1"/>
>>                        <xs:element name="input-value" type="arc:value"
>> minOccurs="0"
>> maxOccurs="1"/>
>>                        <xs:element name="output-value" type="arc:value"
>> minOccurs="0"
>> maxOccurs="1"/>
>>                </xs:sequence>
>>                <xs:attribute name="id" type="xs:integer" use="required"/>
>>                <xs:attribute name="name" type="xs:string"
>> use="required"/>
>>                <xs:attribute name="units" type="xs:string"
>> use="optional"/>
>>                <xs:attribute name="session" type="xs:string"
>> use="optional"/>
>>                <xs:attribute name="executeFlag" type="xs:boolean"
>> use="optional"/>
>>                <xs:attribute name="mirrorFlag" type="xs:boolean"
>> use="optional"/>
>>                <xs:attribute name="last-calibrated" type="xs:dateTime"
>> use="optional"/>
>>                <xs:attribute name="last-configured" type="xs:dateTime"
>> use="optional"/>
>>                <xs:attribute name="last-command-load" type="xs:dateTime"
>> use="optional"/>
>>        </xs:complexType>
>>
>>        <xs:complexType name="status">
>>                <xs:sequence>
>>                        <!-- the following are for heartbeat / runswitch
>> "online" queries -->
>>                        <xs:element name="arc-plc-heartbeat"
>> type="arc:versioned-component"
>> minOccurs="1" maxOccurs="1"/>
>>                        <xs:element name="arc-runswitch"
>> type="arc:versioned-component"
>> minOccurs="1" maxOccurs="1"/>
>>                        <!-- these are for indicating error conditions -->
>>                        <xs:element name="arc-plc-error"
>> type="arc:arc-error" minOccurs="0"
>> maxOccurs="1"/>
>>                        <xs:element name="arc-vdaq-error"
>> type="arc:arc-error" minOccurs="0"
>> maxOccurs="1"/>
>>                </xs:sequence>
>>        </xs:complexType>
>>
>>        <xs:complexType name="arc-error">
>>                <xs:attribute name="error-guid" type="xs:string"
>> use="required"/>
>>                <xs:attribute name="message" type="xs:string"
>> use="required"/>
>>        </xs:complexType>
>>
>>        <xs:complexType name="current-values">
>>                <xs:sequence>
>>                        <xs:element name="channel-value"
>> type="arc:channel" minOccurs="1"
>> maxOccurs="unbounded"/>
>>                </xs:sequence>
>>                <xs:attribute name="id" type="xs:string" use="optional"/>
>>        </xs:complexType>
>>
>>        <xs:complexType name="command-batch">
>>                <xs:sequence>
>>                        <xs:element name="sequence" type="arc:sequence"
>> minOccurs="1"
>> maxOccurs="unbounded"/>
>>                </xs:sequence>
>>                <xs:attribute name="percentComplete" type="xs:decimal"
>> use="optional"/>
>>                <xs:attribute name="batchState" type="arc:batch-mode"
>> use="optional"/>
>>
>>                <xs:attribute name="name" type="xs:string"
>> use="required"/>
>>                <xs:attribute name="id" type="xs:string" use="required"/>
>>        </xs:complexType>
>>
>>        <xs:complexType name="sequence">
>>                <xs:sequence>
>>                        <xs:element name="channel-value" type="arc:value"
>> minOccurs="0"
>> maxOccurs="1"/>
>>                        <xs:element name="command" type="arc:command"
>> minOccurs="0"
>> maxOccurs="unbounded"/>
>>                </xs:sequence>
>>                <xs:attribute name="name" type="xs:string"
>> use="optional"/>
>>                <xs:attribute name="id" type="xs:string" use="required"/>
>>                <xs:attribute name="channel-id" type="xs:integer"
>> use="optional"/>
>>                <xs:attribute name="current-command" type="xs:string"
>> use="optional"/>
>>                <xs:attribute name="percentComplete" type="xs:decimal"
>> use="optional"/>
>>        </xs:complexType>
>>
>>        <xs:complexType name="command">
>>                <xs:complexContent>
>>                        <xs:extension base="arc:value">
>>                                <xs:attribute name="id" type="xs:string"
>> use="required"/>
>>                                <xs:attribute name="type"
>> type="arc:command-types" use="required"/>
>>                                <xs:attribute name="duration"
>> type="xs:decimal" use="required"/>
>>                                <xs:attribute name="percent-complete"
>> type="xs:decimal" use="optional"/>
>>                        </xs:extension>
>>                </xs:complexContent>
>>        </xs:complexType>
>>
>>  <xs:complexType name="access-log">
>>    <xs:sequence>
>>      <xs:element name="logs" type="arc:logs" />
>>    </xs:sequence>
>>    <xs:attribute name="id" type="xs:string" />
>>  </xs:complexType>
>>  <xs:complexType name="logs">
>>    <xs:attribute name="passkey" type="xs:string" use="required" />
>>    <xs:attribute name="records" type="xs:decimal" use="required" />
>>    <xs:attribute name="memo" type="xs:string" use="required" />
>>    <xs:attribute name="id" type="xs:string" use="required" />
>>  </xs:complexType>
>>
>> </xs:schema>
>>
>>
>>
>> --
>> View this message in context:
>> http://old.nabble.com/JAXB-Unmarshalling-error-unexpected-element-tp27361412p27375940.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
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_jaxb.dev.java.net
> For additional commands, e-mail: users-help_at_jaxb.dev.java.net
>
>
>

-- 
View this message in context: http://old.nabble.com/JAXB-Unmarshalling-error-unexpected-element-tp27361412p27386420.html
Sent from the java.net - jaxb users mailing list archive at Nabble.com.